几周前我也开始学习 Flutter 并且面临同样的情况,这是我能够提出的第一个解决方案。答案可能会得到改进,让我知道你是如何解决这个问题的。
我能够使用 ListView 实现一个屏幕,该屏幕使用StreamBuilder、BLoC和ListView.builder在滚动时添加更多项目。
下面是我作为孩子调用的StreamBuilder的代码片段: 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;
}
}),
);}
在BLoC类中,我正在调用一个 API,该 API 采用起始索引并从该索引返回 9 个列表项。