如何使用 Flutter 访问 Firestore 中特定配方的 documentId?
Posted
技术标签:
【中文标题】如何使用 Flutter 访问 Firestore 中特定配方的 documentId?【英文标题】:How can you access the documentId for a particular recipe in Firestore using Flutter? 【发布时间】:2019-02-03 11:20:33 【问题描述】: @override
Widget build(BuildContext context)
return new Scaffold(
appBar: new AppBar(
title: new Text(
"Comments",
style: TextStyle(color: Colors.white),
),
backgroundColor: primaryColor,
),
body: StreamBuilder(
stream: Firestore.instance.collection('recipes').document('MXYt6fLDt5F4I1XJen31').collection('comments').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot)
if(!snapshot.hasData) return CircularProgressIndicator();
return FirestoreListView( documents: snapshot.data.documents);
,
),
);
class FirestoreListView extends StatelessWidget
final List<DocumentSnapshot> documents;
FirestoreListView(this.documents);
@override
Widget build(BuildContext context)
return ListView.builder(
itemCount: documents.length,
itemBuilder: (BuildContext context, int index)
String message = documents[index].data['message'].toString();
return ListTile(
title: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(5.0),
border: Border.all(color: Colors.black),
),
padding: EdgeInsets.all(5.0),
child: Row(
children: <Widget>[
Expanded(
child: Text(message),
),
]
),
)
);
,
);
Firestore.instance.collection('recipes').document('MXYt6fLDt5F4I1XJen31').collection('cmets').snapshots()
如您所见,我正在使用她对应的 ID 访问一个已经存在的食谱。我想转到详细信息页面,然后留下仅针对该食谱显示的评论。所以我需要访问那个 UNIC id。
【问题讨论】:
【参考方案1】:您可以使用forEach
方法尝试这样的事情:
@override
Widget build(BuildContext context)
return Scaffold(
body: Container(
child: Center(
child: StreamBuilder(
stream: Firestore.....your_path....collection('comments').snapshots(),
builder: (context, snapshot)
if (snapshot.hasData)
List<DocumentSnapshot> documentSnapshotsList =
snapshot.data.documents;
List<Recipe> recipesList = [];
documentSnapshotsList.forEach((documentSnapshot)
Recipe recipe = Recipe(
id: documentSnapshot["recipe_id"],
name: documentSnapshot["recipe_name"],
image: documentSnapshot["recipe_image_url"],
);
recipesList.add(recipe);
);
return FirestoreListView(recipesList);
else if (snapshot.hasError)
return Text("Error");
else
return CircularProgressIndicator();
,
),
),
),
);
【讨论】:
以上是关于如何使用 Flutter 访问 Firestore 中特定配方的 documentId?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter / Firestore - 如何访问 Firebase 上的嵌套元素?
如何从 Dart VM / Dart 集成测试访问 Firebase Firestore?
无法使用 Flutter Web 访问 Cloud Firestore
无法在flutter中访问Firebase Firestore doc的字段[重复]