简体   繁体   English

将方法转换为 FutureBuilder:Flutter

[英]Convert method into FutureBuilder : Flutter

I'm new to flutter. This is the method that I used to retrieve the data from firebase and I'm able to get the exact answer in the console.我是 flutter 的新手。这是我用来从 firebase 检索数据的方法,我能够在控制台中得到准确的答案。 My question is how I can convert this code into future builder so I am able to read the data in my application.我的问题是如何将此代码转换为未来的构建器,以便我能够读取我的应用程序中的数据。

void getUser() async {
  firestoreInstance.collection("User Data").get().then((querysnapshot) {
    querysnapshot.docs.forEach((result) {
      firestoreInstance
          .collection("User Data")
          .doc(result.id)
          .collection("bank")
          .where('account_username', isEqualTo: ownerData?.name2)
          .get()
          .then((query Snapshot) {
        querysnapshot.docs.forEach((result) {
            print (result["bank_name"]);
        });
      });
    });
  });
}

You should return the value from the query, not print it您应该从查询中返回值,而不是打印它

Your function should look like this你的 function 应该是这样的

Future<String> getUser() async {
  firestoreInstance.collection("User Data").get().then((querysnapshot) {
    querysnapshot.docs.forEach((result) {
      firestoreInstance
          .collection("User Data")
          .doc(result.id)
          .collection("bank")
          .where('account_username', isEqualTo: ownerData?.name2)
          .get()
          .then((query Snapshot) {
        querysnapshot.docs.forEach((result) {
            return result["bank_name"];
        });
      });
    });
  });
}

The Futurebuilder should look like this Futurebuilder 应该是这样的

 FutureBuilder<String>(
    future: getUser(), // async work
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
       switch (snapshot.connectionState) {
         case ConnectionState.waiting: return Text('Loading....');
         default:
           if (snapshot.hasError)
              return Text('Error: ${snapshot.error}');
           else
          return Text('Result: ${snapshot.data}');
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM