每当我在本地进行排序时,我的应用程序都会再次从Firestore中获取项目列表。
由于这个原因,我失去了已排序的列表,并再次获得了原始列表。
本质上,我正在寻找.once()替代方案,就像我在JS的Firebase实时数据库中使用的那样。
fetchItemsFromDb().then((itemsFromDb) {
setState(() {
items = itemsFromDb;
isProcessed = true;
});
});
fetchItemsFromDb() async {
List<Item> items = [];
await Firestore.instance.collection('items').getDocuments().then((data) {
items = data.documents.map((DocumentSnapshot item) {
var i = item.data;
return Item(
i['itemName'],
int.parse(i['quantity']),
int.parse(i['price']),
i['veg'],
i['uid'],
i['timestamp'],
LatLng(i['location'].latitude, i['location'].longitude),
);
}).toList();
});
return items;
}
FetchItemsFromDB()应该按照您的预期工作,可能是代码调用了该函数:
fetchItemsFromDb().then((itemsFromDb) {
setState(() {
items = itemsFromDb;
isProcessed = true;
});
});
意外时再次运行。该代码是否存在于构建方法中?如果是这样,它将在重新构建窗口小部件的任何时间运行,这取决于您进行本地排序的方式。如果只需要运行一次,则可以将其添加到小部件的initState()函数中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句