【问题标题】:Flutter and Cloud Firestore fetch issueFlutter 和 Cloud Firestore 获取问题
【发布时间】:2018-09-25 10:42:28
【问题描述】:

我在使用 Firebase 的 Flutter 和 Cloud Firestore 时遇到问题。 我已经可以将数据添加到数据库中,但我无法获取它,因为每次调用我的方法时,我都会返回 null。

这是我的代码:

dynamic getFromDatabase(String path, String item) {
  DocumentReference _docu = Firestore.instance.document('$path');
  var data;
  _docu.get().then((datasnapshot) {
    if(datasnapshot.exists){
      data = datasnapshot.data['$item'];
    }
  });
  return data;
}

这是我调用方法的地方:

print((await getFromDatabase("User/$_uid","Vorname")));

还有错误:

I/flutter (26289): null

【问题讨论】:

    标签: database firebase firebase-realtime-database google-cloud-firestore flutter


    【解决方案1】:

    一个不错的选择是使用 FutureBuilder 小部件。 您可以在 StatelessWidget 中使用它,避免实现 StatefulWidget

    FutureBuilder(
      future: Firestore.instance.document(path).get(),
      builder: (context, snapshot) {
        if (snapshot.connectionState != ConnectionState.done) {
          return CircularProgressIndicator();
        }
        if (snapshot.hasError) {
          return Text('Something went wrong.');
        }
    
        DocumentSnapshot docSnap = snapshot.data as DocumentSnapshot;
        return Text(docSnap.data['doc_field']);
      }
    )
    

    【讨论】:

      【解决方案2】:

      我以前没有使用过 Firestore。只有firebase的正常数据库。但我认为这是一个异步时间问题。看起来它在完成数据快照之前返回 null。 (PS.datasnapshot 拼写错误)。尝试这样的事情。就像我说的。不确定它是否有效。

      Future<String> getFromDatabse(String path, String item){
        DocumentReference _docu = Firestore.instance.document(path);
        _docu.get().then((datasnapchot){
          if(datasnapchot.exists){
            return datasnapchot.data[item];
          }
        });
      }
      

      在调用方法时。这样做。

      String getData = await getFromDatabse(path, item);
      

      (PS也是数据库拼错哈哈)

      【讨论】:

      • 所以我稍微改变了我的代码,我尝试了你所说的但它仍然无法正常工作。
      • 你能做一个1个文件的例子,我可以复制粘贴到我的开发环境中吗?我会尝试在几个小时内为您修复它。
      猜你喜欢
      • 2020-03-30
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多