【发布时间】:2020-08-03 18:09:57
【问题描述】:
此代码当前加载存储在 Firestore 集合中的所有 brews。我如何才能加载最初仅 10 个 brews,然后当用户向下滚动并到达 10 个 brews 列表的末尾时。它应该在最后一次 brew 之后再加载 10 个。并且 brews 应该根据时间戳进行排序。
class BrewList extends StatefulWidget {
@override
_BrewListState createState() => _BrewListState();
}
class _BrewListState extends State<BrewList> {
List<Brew> brews = [];
ScrollController _controller = ScrollController();
@override
void initState() {
_startFirst();
super.initState();
_controller.addListener(_scrollListener);
}
_scrollListener() {
setState(() {
if (_controller.position.atEdge) {
if (_controller.position.pixels == 0) {
} else {
}
}
});
}
_startFirst() async {
brews = await DatabaseService().brews ?? [];
setState(() {
brews = brews;
});
}
@override
Widget build(BuildContext context) {
Future<void> _refreshBrews() async {
List<Brew> tempList = await DatabaseService().brews;
setState(() {
brews = tempList;
});
print(brews);
}
return RefreshIndicator(
onRefresh: _refreshBrews,
child: ListView.builder(
controller: _controller,
itemCount: brews.length,
itemBuilder: (context, index) {
return BrewTile(brew: brews[index]);
},
),
);
}
}
Future<List<Brew>> get brewss async {
QuerySnapshot snapshot = await brewsCollection
.orderBy('timestamp', descending: true)
.limit(2)
.getDocuments();
return _postListFromSnapshot(snapshot);
}
【问题讨论】:
-
首先您只想获取 10 个项目?
-
它可能是 20..但是我想在滚动上加载更多..
-
非常感谢..但是你能不能把它简化一下..我只是这里的初学者,这看起来有点复杂..@pskink
-
你有一个完整的工作小部件,只需使用它
标签: firebase flutter google-cloud-firestore flutter-layout