如何解决Flutter Firestore 分页添加/删除项目
我正在努力完成这件事,两天后我决定向你们寻求帮助。 我使用 Mobx 作为状态管理,问题与在列表中添加/删除项目有关,例如如果我根据限制检索每个 5 个项目的两个查询,然后从第一个查询中删除一个项目,第二个查询中的第一个项目是重复的,如果我添加一个新项目,则第二个查询中的第一个项目被隐藏。我还为 ListView.builder 设置了一个 scrollListener 以获取列表底部并调用更多项目。
提前致谢,
@override
Stream<QuerySnapshot> teste(DocumentSnapshot lastDoc) {
if (lastDoc == null) {
return firestore.collection('teste')
.orderBy('name')
.limit(5)
.snapshots();
} else {
return firestore.collection('teste')
.orderBy('name')
.limit(5)
.startAfterDocument(lastDoc)
.snapshots();
}
}
@observable
ObservableList<List<Testemodel>> allPagedResults = ObservableList<List<Testemodel>>();
@observable
ObservableList<Testemodel> listTeste = ObservableList<Testemodel>();
@observable
DocumentSnapshot lastDoc;
@observable
bool hasMoreItem;
@action
void teste() {
var _currentRequestIndex = allPagedResults.length;
primaryRepository.teste(lastDoc).listen((query) {
if (query.docs.isNotEmpty) {
var _query = query.docs.map((doc) => Testemodel.fromFirestore(doc))
.toList();
var _pageExists = _currentRequestIndex < allPagedResults.length;
if (_pageExists) allPagedResults[_currentRequestIndex] = _query;
else allPagedResults.add(_query);
listTeste = allPagedResults.fold<List<Testemodel>>(<Testemodel>[],(initialValue,pageItems) => initialValue..addAll(pageItems)).asObservable();
if (_currentRequestIndex == allPagedResults.length - 1) lastDoc = query.docs.last;
hasMoreItem = _query.length == 5;
}
});
}
解决方法
这个问题好运吗?
要添加新项目并拥有多个页面,您可以执行以下操作:
if (allPagedResults.contains(allPagedResults[0].last) == false) {
allPagedResults.last.add(allPagedResults[0].last);
allPagedResults.last.remove(allPagedResults[0].first);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。