我正在尝试实现无限滚动功能。
我尝试在 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/