几周前我也开始学习 Flutter,并面临着同样的情况,这是我能够想出的第一个解决方案。答案可能可以改进,让我知道你是如何解决这个问题的。
我能够实现一个屏幕ListView使用以下方式在滚动上添加更多项目流生成器, BLoC and ListView.builder.
下面是代码片段流生成器我称之为child: in body: of my Scaffold
StreamBuilder<List<Content>> _getContentsList() {
var page = 1;
return StreamBuilder<List<Content>>(
stream: bloc.contents,
initialData: [],
builder: (context, snapshot) =>
ListView.builder(itemBuilder: (context, index) {
print('looping...');
if (snapshot.data.isNotEmpty) {
if (index < snapshot.data.length) {
return ListTile(
title: Text(
snapshot.data.elementAt(index).title,
style:
TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
),
subtitle: Text(
snapshot.data.elementAt(index).description,
style: TextStyle(fontSize: 14.0),
),
);
} else if (index / 9 >= page) {
page++;
print('index: $index, page: $page');
bloc.index.add(index);
} else
return null;
}
}),
);}
In BLoC我正在调用一个 API,它采用起始索引并从该索引返回 9 个列表项。