【问题标题】:Data stream not showing on iOS unless I hot refresh除非我热刷新,否则数据流不会在 iOS 上显示
【发布时间】:2020-10-22 17:58:58
【问题描述】:

我正在创建一个以 firebase 作为后端的颤振应用程序。我有一个数据流,它从 Firestore 集合中提取数据,并在将其转换为列表后将其呈现在 Cupertino Picker 中。问题是当我启动应用程序并使用选择器导航到页面时,列表是空的,除非我热刷新。当我使用选择器弹出上下文并登陆页面时,数据也会显示,否则它是空的。

我的信息流是这样的:

  Stream<List<DataModel>> get myData {
    return myDataCollection.snapshots().map(_myDataListFromSnapshot);
  }

并将其映射到我的模型,并将其转换为如下列表:

  List<DataModel> _myDataListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents.map((doc) {
      return DataModel(
          name: doc.data['name'] ?? '',
          country: doc.data['country'] ?? '');
    }).toList();
  }

这是我的选择器:

return CupertinoPicker(
  useMagnifier: true,
  magnification: 1.1,
  squeeze: 2,
  backgroundColor: CupertinoColors.white,
  itemExtent: 50,
  onSelectedItemChanged: (int index) {},
  children: myData.map((myData) {
    return Text(
      myData.name + ' ' + myData.country,
    );
  }).toList(),
);

有什么我做错了。我会很感激我能得到的任何帮助。谢谢

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    您需要使用asyncawait。问题是这样的。您的方法将如下所示:

       Future<List<DataModel>> get myData async {
           return await myDataCollection.snapshots().map(_myDataListFromSnapshot);
           } 
    

    您可以从here阅读更多内容。

    【讨论】:

    • 我试过这个,我得到错误:不能从函数'myData'返回类型为'Stream'的值
    猜你喜欢
    • 2021-05-14
    • 2013-07-17
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    相关资源
    最近更新 更多