我正在遵循此guide来构建动态的无限Listview。
在指南中,该类将填充用于演示的整数列表:
class _MyHomePageState extends State<MyHomePage> {
List<int> items = List.generate(10, (i) => i);
当用户滚动浏览这10个项目时,会动态生成更多数据并将其添加到列表中,并使用ListView.builder
构建器方法:
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(title: new Text("Number $index"));
},
controller: _scrollController,
添加新项目的方法:
List<int> newEntries = await fakeRequest(items.length, items.length + 10);
但是,如果未首先填充列表(即,空列表),则该列表将不起作用,因为ListView.builder
可以生成0个项目/小部件。当我用从HTTP请求中检索到的项目填充列表视图并且这些项目是异步的时,这尤其成问题。
当前,在我对此进行修改之后,我的应用程序上什么也不显示。如果我用虚拟数据填充前几个条目(如示例所示),则滚动生成新数据即可。
我尝试使用FutureBuilder
,但是由于构建方法会在将来完成时重复进行,因此无法正常工作,并且在前10个之后从未真正生成记录。
我将如何修改此示例,以便可以等待第一个异步调用来获取10条记录?