flutter - 如何检查滚动位置是在 ListView 的顶部还是底部?

标签 flutter dart flutter-layout

我正在尝试实现无限滚动功能。

我尝试在 NotificationListener 上使用 ListView 来检测滚动事件,但我看不到显示滚动是否到达底部的事件查看。

实现这一目标的最佳方法是什么?

最佳答案

一般有两种方法。

1.使用 ScrollController

// Create a variable
final _controller = ScrollController();
  
@override
void initState() {
  super.initState();
  
  // Setup the listener.
  _controller.addListener(() {
    if (_controller.position.atEdge) {
      bool isTop = _controller.position.pixels == 0;
      if (isTop) {
        print('At the top');
      } else {
        print('At the bottom');
      }
    }
  });
}

用法:

ListView(controller: _controller) // Assign the controller.

<强>2。使用 NotificationListener

NotificationListener<ScrollEndNotification>(
  onNotification: (scrollEnd) {
    final metrics = scrollEnd.metrics;
    if (metrics.atEdge) {
      bool isTop = metrics.pixels == 0;
      if (isTop) {
        print('At the top');
      } else {
        print('At the bottom');
      }
    }
    return true;
  },
  child: ListView.builder(
    physics: ClampingScrollPhysics(),
    itemBuilder: (_, i) => ListTile(title: Text('Item $i')),
    itemCount: 20,
  ),
)

关于flutter - 如何检查滚动位置是在 ListView 的顶部还是底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377779/

相关文章:

android - Flutter Gridview 不更新来自 firebase 的值

dart - Flutter tween 基本动画在 `FutureBuilder` 内部不起作用

android - Flutter Mapbox 构建一直失败( list 合并失败)

flutter - 我的 AppBar 在屏幕上的图像后面,或者我看不到它,有什么建议可以在顶部显示我的 AppBar 和 buttomNavigator 并且是半透明的吗?

flutter - 将 DropdownButton 的选定值居中

flutter - 如何在 flutter 中获得渐变底部导航选项卡?

android - 签署我的 flutter 应用程序时,我无法构建该应用程序 *已编辑*

dart - Dart等待while(true),但用户无法使用stdin输入

flutter - Flutter ChangeNotifierProvider构建器已弃用

flutter - Flutter MatrixGestureDetector-最小和最大比例