Firebase 如何获取文档数据并在屏幕上进行设置
我试图从firebase对象(如名称)获取某些信息,但构建不会等待未来,也不会在事后更改它 我尝试了使用Future和Stream(我假设Stream的效率较低,但我对Flitter非常陌生) 我有这个函数来获取我想要的文档(是的,设置了propertyId!) 然后,我尝试将其更改为一个流,在该流中,我只需在构建中调用此函数:Firebase 如何获取文档数据并在屏幕上进行设置,firebase,flutter,google-cloud-firestore,future,Firebase,Flutter,Google Cloud Firestore,Future,我试图从firebase对象(如名称)获取某些信息,但构建不会等待未来,也不会在事后更改它 我尝试了使用Future和Stream(我假设Stream的效率较低,但我对Flitter非常陌生) 我有这个函数来获取我想要的文档(是的,设置了propertyId!) 然后,我尝试将其更改为一个流,在该流中,我只需在构建中调用此函数: void _createPropertyInfoState() { StreamBuilder( stream: Firestore.insta
void _createPropertyInfoState() {
StreamBuilder(
stream: Firestore.instance.collection('properties').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
propertyNameController = TextEditingController();
streetNameController = TextEditingController();
boughtOnController = TextEditingController();
} else {
propertyNameController = TextEditingController(
text: snapshot.data.document[widget.propertyId]
['propertyName']);
streetNameController = TextEditingController(
text: snapshot.data.document[widget.propertyId]['address']);
boughtOnController = TextEditingController(
text: snapshot.data.document[widget.propertyId]['boughtOn']);
}
return null;
});
}
我只想设定那些精确的值
FutureBuilder(
future: _createPropertyInfoState(),
builder: (context, snapshot) {
if (snapshot.hasData) {
propertyNameController = TextEditingController(text: snapshot.data['propertyName']);
streetNameController = TextEditingController(text: snapshot.data['address']);
boughtOnController = TextEditingController(text: snapshot.data['boughtOn']);
} else {
propertyNameController = TextEditingController();
streetNameController = TextEditingController();
boughtOnController = TextEditingController();
}
return null;
});
void _createPropertyInfoState() {
StreamBuilder(
stream: Firestore.instance.collection('properties').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
propertyNameController = TextEditingController();
streetNameController = TextEditingController();
boughtOnController = TextEditingController();
} else {
propertyNameController = TextEditingController(
text: snapshot.data.document[widget.propertyId]
['propertyName']);
streetNameController = TextEditingController(
text: snapshot.data.document[widget.propertyId]['address']);
boughtOnController = TextEditingController(
text: snapshot.data.document[widget.propertyId]['boughtOn']);
}
return null;
});
}