firebase - 如何将从 Firebase 检索到的值存储到变量 Flutter 中
问题描述
我正在尝试从 firebase 检索数据(客户名称、客户 ID)并将其存储到变量中。之后,我想将变量数据存储到另一个 firebase 路径位置。
我可以调用快照并打印它,但我无法将 firebase 中的数据保存到变量中。
CollectionReference orderInfo =
FirebaseFirestore.instance.collection('orderInfo');
final user = FirebaseAuth.instance.currentUser;
String cusName;
String add;
void getNameAddress() async {
final doc = await FirebaseFirestore.instance
.collection('users')
.doc(user.uid)
.get();
cusName = doc['name'];
add = doc['address1'] + '' + doc['address2'] + '' + doc['address3'];
}
Future initializeOrder(BuildContext ctx) {
getNameAddress();
return orderInfo.doc(user.uid + 'order').set({
'orderID': '',
'cusID': user.uid,
'cusName': cusName,
'cusAdd': add,
'clID': '',
'clName': null,
'price': null,
'selectedDate': null,
'serviceSelected': null,
'typeOfService': 'Not selected yet',
});
}
intializeOrder() 是我用来将数据存储在另一个路径中的函数。
我应该如何解决?
解决方案
由于getNameAddress()
函数是异步的,async
而Firestoreset()
方法是异步的,所以你需要在调用的时候制作你的initializeOrder()
函数async
和使用,如下:await
getNameAddress()
Future<void> initializeOrder(BuildContext ctx) async {
await getNameAddress();
return orderInfo.doc(user.uid + 'order').set({
'orderID': '',
'cusID': user.uid,
'cusName': cusName,
'cusAdd': add,
'clID': '',
'clName': null,
'price': null,
'selectedDate': null,
'serviceSelected': null,
'typeOfService': 'Not selected yet',
});
}
推荐阅读
- sql - 将两行合并为一个 Postgresql
- c++ - 使用 std::enable::if 和 std::is_base_of 来约束继承
- mysql - 2个表的MySQL连接查询:返回不正确
- angular - 等待所有可观察对象完成(按顺序 + 父子关系)
- wordpress - 如何在前端也为 webp 版本(无插件)输出缩略图的 html?
- css - 如何使悬停持续更长时间
- c++ - 时间:2019-01-10 标签:c++rapidjsongetadd value to existing array
- html - 检查一个元素在 CSS 中是否有另一个元素
- javascript - TypeScript,没有带有“字符串”类型参数的索引签名
- java - 使用 org.lwjgl.stb 加载纹理