[英]Flutter future to future
我必須在我的應用程序中做一些技術上並不復雜但我不知道該怎么做的事情。
我需要從 firebase 獲取一些數據,然后使用該數據從 fireabse 獲取其他數據。
它就是這樣工作的。 我有一個組織,從中我只得到用戶的 UID。 在我打印所有組織(僅 UIDS)之后,我必須再次調用數據庫並使用我之前獲得的 uid 獲取人員的姓名。
這是我嘗試做的
FutureBuilder(
future: databaseReference.once(),
builder: (context, AsyncSnapshot < DataSnapshot > snapshot) {
List lists = [];
if (snapshot.hasData) {
lists.clear();
Map < dynamic, dynamic > values = snapshot.data.value;
values.forEach((key, values) {
lists.add(values);
print(values);
}, );
return new ListView.builder(
primary: false,
padding: EdgeInsets.only(left: 12.0, right: 12, bottom: 15, ),
shrinkWrap: true,
itemCount: lists.length,
itemBuilder: (BuildContext context, int index) {
HERE I TRY TO CALL IT AGAIN WITH THE REZULT I GET
FirebaseDatabase.instance.reference().child("Users/" + lists[index]["UID"].toString() + "/Name").once().then((DataSnapshot snapshot) {
print('Data : ${snapshot.value}');
aa = snapshot.value;
});
return Container(
child: Text("$aa"));
});
}
return Container(
margin: const EdgeInsets.only(top: 300),
child: CircularProgressIndicator());
}),
我得到的問題是它會延遲 null 如果我在容器中顯示它會出現並且它不會出現。 我正在考慮在該未來構建器中添加一個未來構建器。 你們會推薦什么?
也許您可以在 Future/Stream Provider 中處理所有用戶獲取並簡化您的小部件,只顯示用戶列表?
例子:
class MyWidget extends HookWidget {
@override
Widget build(BuildContext context) {
final AsyncValue<List<User>> asyncUsers = useProvider(allUsersProvider);
return asyncUsers.when(
data: (users) => ListView.builder(
shrinkWrap: true,
itemCount: users.length,
itemBuilder: (BuildContext context, int index) => Container(
child: Text(users[index].name),
),
),
loading: () => Text('Loading...'),
error: (error, trace) => Text('Something bad happened'),
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.