【发布时间】:2018-12-25 03:27:31
【问题描述】:
我试图在我的颤振应用程序中创建一个用户集合。
应用程序有一个库存集合,其中包含文档项目,这些文档(如盘子或袋子)有 2 个字段
我创建了一个 root 用户集合,并且该集合文档使用他们的用户 ID 标识了使用的用户,每个用户 ID 一个文档(您从 FirebaseAuth 获得的那个)。
有人告诉我,我必须在 Firebase 中设置访问规则,以允许每个用户拥有自己的股票收藏。
Github https://github.com/juancarlosjr97/flutter_ims
每个用户都应该有自己的收藏
我自己的数据库看起来像这样:
另一个包含用户集合的集合如下所示:
这是我可以访问股票集合的代码
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class StockWidget extends StatefulWidget {
@override
StockWidgetApp createState() => new StockWidgetApp();
}
class StockWidgetApp extends State<StockWidget> {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('stock').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return _buildList(context, snapshot.data.documents);
},
);
}
Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
return ListView(
padding: const EdgeInsets.only(top: 20.0),
children: snapshot.map((data) => _buildListItem(context, data)).toList(),
);
}
Widget _buildListItem(BuildContext context, DocumentSnapshot data) {
final record = Record.fromSnapshot(data);
return Padding(
key: ValueKey(record.item),
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(5.0),
),
child: ListTile(
title: Text(record.item),
trailing: Text(record.instock.toString()),
onTap: () =>
record.reference.updateData({'instock': record.instock + 1}),
onLongPress: () =>
record.reference.updateData({'instock': record.instock - 1}),
),
),
);
}
}
class Record {
final String item;
final int instock;
final DocumentReference reference;
@override
String toString() => "Record<$item:$instock>";
Record.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map['item'] != null),
assert(map['instock'] != null),
item = map['item'],
instock = map['instock'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data, reference: snapshot.reference);
}
【问题讨论】:
-
您想为每个带有编码的用户文档创建股票集合吗?
-
请提供重现问题的最小代码inside您的问题本身。还要确保在您的帖子中有一个(单个)问题,因为现在我不清楚您在问什么。
-
抱歉,是的,我正在尝试为每个用户创建一个库存集合。这个想法是每个用户都有自己的股票,而不是像已知的普通股票列表
标签: firebase dart flutter google-cloud-firestore