我正在尝试为我的内置flutter应用程序实现无限滚动,但是我遇到了问题。 我想在到达列表末尾时加载更多元素。
然后我尝试使用此代码(为了方便起见,我将放置一个pastebin https://pastebin.com/StwTpj0M):
void initState() {
loadItems();
_scrollController..addListener(_onScroll);
super.initState();
}
final _scrollThreshold = 200.0;
void _onScroll() {
final maxScroll = _scrollController.position.maxScrollExtent;
final currentScroll = _scrollController.position.pixels;
if (maxScroll - currentScroll <= _scrollThreshold) {
//this is called many time
print("limit reached");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder
(
controller: _scrollController,
itemCount: litems.length,
itemBuilder: (BuildContext ctxt, int index) {
return new Text(litems[index]);
}
),
)
],
),
);
但是问题在于,在我创建的函数 _onScroll 中,该块:
if (maxScroll - currentScroll <= _scrollThreshold) {
print("limit reached");
}
被调用了很多次,实际上它将多次打印我的字符串。 显然,这是一个问题,因为如果我向后端发出异步调用,则会多次触发相同的调用。
我遵循了本教程,在我的实际应用程序中我使用了Bloc,但问题是相同的。
答案 0 :(得分:0)
使用Google Codelab,它们会按照正确的说明显示工作原理。 https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2/#0