我想在将特定文档的名称放入函数时获取其文档 ID。 这是我的功能:
void _getId(town) {
var data = FirebaseFirestore.instance
.collection('towns')
.where('town_name', isEqualTo: town)
.snapshots();
print(data.id);}
这是我的按钮:
ElevatedButton(
onPressed: () => _getId(_townChosen), child: Text('Get ID')),
值 _townChosen
是一个字符串,对应于数据库中的字段 town_name
。在完整的程序中,我从下拉按钮中获取值,这部分效果很好。
这是database
所有文档都有一个 town_name
字段。
我需要所选城镇的 id 并将其发送到其他小部件中以使用其子集合。请问你能帮我获取id吗?
答案 0 :(得分:0)
首先,创建一个名为townid 的变量,并将您的函数更改为 async,并使用有状态的小部件更新它,并使用 get 代替快照:
String townId = 'Get ID';
void _getId(town) async {
var data = await FirebaseFirestore.instance
.collection('towns')
.where('town_name', isEqualTo: town)
.get();
setState(() {
townId = data.docs[0].id; //because the query returns a list of docs, even if the result is 1 document. You need to access it using index[0].
});
print(townId);
}
在您的按钮中:
ElevatedButton(onPressed: () => _getId(_townChosen), child: Text(townId)),