在Flutter中显示Firestore地图数据

时间:2019-09-12 10:35:37

标签: flutter dart google-cloud-platform google-cloud-firestore

我正在构建密码管理器,并且试图通过在Map中显示数据来保存Firestore读取。想法是要有一个文档(针对每个密码类别),并将密码存储为地图。在此处查看示例屏幕截图: enter image description here

这个想法是用户单击每个密码(地图),然后应用程序使用索引将它们带到相关密码。然后,我希望将每个地图中的数据分别排序,以便它们可以存在于自己的Text小部件中。但是我还没有看到在Flutter中显示地图数据的可能性。

我从这里尝试了一些示例,但无法显示地图中的数据-https://github.com/fireship-io/flutter-base/blob/master/lib/main.dart

任何建议将不胜感激。

new StreamBuilder(
    stream: Firestore.instance
        .collection('users')
        .document(userDocSTRING.toString())
        .collection(userPassSTRING.toString())
        .snapshots(),
    builder: (context, snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        // If no data is present, display a waiting indicator to the user
        // If Null, red screen displays
        return Center(child: CircularProgressIndicator());
      } else {
        // Debug print for Ryan
        // print(snapshot.data[0].data.toString());
        return new ListView.builder(
          itemCount: snapshot.data.documents.length,
          itemBuilder: (context, index) {
            DocumentSnapshot documentSnapshot =
                snapshot.data.documents[index];
            return  ListTile(
                        leading: Container(
                            child: IconButton(
                              icon: Icon(Icons.content_copy),
                              color: lightCardCOLOR,
                        title: Text(documentSnapshot['Name']

从上面的代码中可以看到,从文档中获取字段很容易,但是我不希望每个密码都拥有自己的文档。我希望文档中包含多个对应于密码的地图。所以documentSnapshot['Name']我想成为地图的名称或值

1 个答案:

答案 0 :(得分:0)

我建议您尝试“保存在Firestore上的读取内容”使您更难以建模和显示数据。由于文档的最大大小为1MB,因此它也不会缩放。考虑将每个密码存储在不同的文档中,以使其更容易。文档读取并不是真的很昂贵,Firebase SDK会在本地缓存它们,以避免查询时产生读取费用。