【问题标题】:Flutter firestore getting data receiver: null errorFlutter Firestore 获取数据接收器:空错误
【发布时间】:2021-03-31 23:08:21
【问题描述】:

我搜索了很多,但找不到解决方案。我需要你的帮助。

在我的数据库模型中,我有一个这样的方法来获取数据:

  Future<Map<String,dynamic>> getSystemSettings() async {
    var response = await _firestore.collection("system").doc("settings").get();
    return response.data();
  }

后来我想用Map 形式的数据从我要获取数据的类中调用,方法如下。

  getValues() {
    database.getSystemSettings().then((value) {
    print("value");
    print(value);
  });

我希望在第二个代码块中看到我的 Map 类型数据代替值,但我收到以下错误。

在 null 上调用了方法“sistemAyarlariniAl”。

接收者:空

尝试调用:sistemAyarlariniAl()

你能帮我解决这个问题吗?我哪里做错了?

【问题讨论】:

  • 你怎么能打电话给database.getSystemSettings()?显示您的完整代码

标签: flutter asynchronous dart google-cloud-firestore async-await


【解决方案1】:

试试这个

  Future getPosts() async {
        var firestore = Firestore.instance;
        QuerySnapshot qn = await firestore.collection("system").getDocuments();
        return qn.documents;
      }

或者您可以使用 Stream Builder 从 firebase 访问数据。

首先你需要安装cloud_firestore

    dependencies:
          cloud_firestore: ^0.14.4

然后导入

    import 'package:cloud_firestore/cloud_firestore.dart';

然后需要构建StreamBuilder

StreamBuilder(
       stream: Firestore.instance
                 .collection('system')
                 .document(users.uid)
                 .snapshots(),
       builder: (context, snapshot){
                if (snapshot.hasData) {
                  return Container())

你可以像这样访问你的数据库值

 snapshot.data['settings'].toString()

TextField 中的示例

Text(
       snapshot.data['settings'].toString(),
       style: TextStyle(
              fontSize: 20,
              decorationThickness:2,
              fontWeight:
              FontWeight.w500,
              color:Colors.black87)
    ),

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2020-07-30
    • 2018-12-22
    • 2020-04-01
    • 2020-12-08
    • 2023-03-15
    相关资源
    最近更新 更多