【发布时间】:2020-01-14 05:22:22
【问题描述】:
我正在构建一个密码管理器,并试图通过在 Map 中显示数据来节省 Firestore 读取。这个想法是有一个文档(对于每个密码类别)并将密码作为地图存储在其中。在此处查看示例屏幕截图:
这个想法是用户点击每个密码(地图),应用程序使用索引将他们带到相关的密码。然后,我希望将每个地图中的数据单独排序,以便它们可以存在于自己的文本小部件中。但是我还没有看到在 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']我想成为一个地图的名字或值
【问题讨论】:
-
请提供您已经尝试过的代码示例。
-
我已经把我的代码放在上面,并在我想要完成的最后做一个简短的总结
-
我建议您尝试“节省 Firestore 读取”会使您更难以建模和显示数据。它也不会缩放,因为文档的最大大小为 1MB。考虑将每个密码存储在不同的文档中以使其更容易。文档读取并不是真的很昂贵,Firebase SDK 会在本地缓存它们,以避免查询时读取的成本。
-
@DougStevenson 我完全忘记了 1MB 的限制——这会让我很头疼,因为这是一个用于更大规模应用程序的测试平台!您可以发布该回复以便我将其标记为答案吗?当涉及到它时,我将不得不支付额外阅读的价格!
标签: flutter dart google-cloud-platform google-cloud-firestore