Firebase 如何获取文档数据并在屏幕上进行设置

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

我试图从firebase对象(如名称)获取某些信息,但构建不会等待未来,也不会在事后更改它

我尝试了使用Future和Stream(我假设Stream的效率较低,但我对Flitter非常陌生)

我有这个函数来获取我想要的文档(是的,设置了propertyId!)

然后,我尝试将其更改为一个流,在该流中,我只需在构建中调用此函数:

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;
        });
  }