首页 > 解决方案 > Firestore ConnectionState 在颤振应用程序中永远处于等待状态

问题描述

我正在尝试从 Firestore 数据库中获取记录并将其显示在 Flutter 应用程序中。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title: Text('Hello'),
          actions: <Widget>[
            IconButton(icon: Icon(Icons.list), onPressed: _pushSaved)
          ]),
      drawer: _buildDrawer(),
      body: _buildCarpoolsList(),
    );
  }

Widget _buildCarpoolsList() {
    return StreamBuilder<QuerySnapshot>(
        stream: Firestore.instance.collection("carpools").snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return CircularProgressIndicator();
          } else {
            var _carpools = snapshot.data.documents;
            return ListView(
                padding: const EdgeInsets.all(16.0),
                children: _deserializeCarpools(_carpools));
          }
        });
  }

_buildCarpoolsList()函数snapshot.ConnectionState中总是ConnectionState.waiting,并且函数返回CircularProgressBar()ConnectionState.waiting

carpools在 FireStore 数据库中有一个集合,其中包含一些记录。

我已将 firestore 数据库规则设置为允许所有。

rules_version = '2';
service cloud.firestore {
  match /** {
      allow read, write: if true;
  }
}

编辑:我的 Firebase 身份验证有效。(如果有帮助的话)

这里可能缺少什么?

标签: firebasefluttergoogle-cloud-firestorefirebase-security

解决方案


Firebase您可以在控制台中修改安全设置。如果您在生产模式(不是测试)中创建数据库,它带有可能会阻止任何连接的安全规则,直到您允许为止。

打开Rules数据库屏幕中的选项卡,(仅测试 -> 允许读取、写入;如下所示)如果有效,请考虑阅读安全规则并根据您的需要进行适当设置。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

推荐阅读