• Flutter NotificationListener 监听列表的滚动


    import 'package:flutter/material.dart';
    import 'package:flutter_imagenetwork/flutter_imagenetwork.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: HomePage(),
        );
      }
    }
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      List<String> images =
          List.generate(3, (i) => 'https://picsum.photos/id/$i/800/800');
    
      ScrollController _scrollController = ScrollController();
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: NotificationListener(
            onNotification: (Notification notification) {
              if (notification is ScrollStartNotification) {
                print('滚动开始');
              }
              if(notification is ScrollUpdateNotification){
                print('滚动中');
              }
              if (notification is ScrollEndNotification) {
                print('停止滚动');
                if (_scrollController.position.extentAfter == 0) {
                  print('滚动到底部');
                }
                if (_scrollController.position.extentBefore == 0) {
                  print('滚动到头部');
                }
              }
            },
            child: ListView.builder(
              controller: _scrollController,
              itemCount: images.length,
              itemBuilder: (context, index) {
                return Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: AjanuwImage(
                    image: AjanuwNetworkImage(images[index]),
                    loadingBuilder: AjanuwImage.defaultLoadingBuilder,
                    errorBuilder: AjanuwImage.defaultErrorBuilder,
                    gaplessPlayback: true,
                  ),
                );
              },
            ),
          ),
        );
      }
    }
    
  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/ajanuw/p/11378960.html
Copyright © 2020-2023  润新知