firebase - 如何获取文档列表而不在Flutter Cloud Firestore中监听更改?

标签 firebase flutter dart google-cloud-firestore

每当我在本地进行排序时,我的应用程序都会再次从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()函数中。

关于firebase - 如何获取文档列表而不在Flutter Cloud Firestore中监听更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918445/

相关文章:

javascript - 火力地堡错误 TS7006 : Parameter 'snapshot' implicitly has an 'any' type

Firebase 可调用 + express ?

flutter - flutter 中的透明文本字段

android - flutter 错误 : SafetyNet Attestation fails basic integrity

java - 如何按降序从 Firebase 数据库中检索数据?

flutter - 调用 setState 时键盘关闭

json - 如何在 Dart 中使用 json_annotation 将 Uint8List 序列化为 json?

dart - 盒子装饰 : DecorationImage Fullscreen background image

flutter - 如何访问 Dart 中的映射字段

angular - 使用模拟器时,Firestore 规则中的 request.auth 为 null