gpt4 book ai didi

firebase - FutureBuilder 的嵌套 future

转载 作者:IT王子 更新时间:2023-10-29 07:15:42 25 4
gpt4 key购买 nike

我有一个 FutureBuilder应该等待来自 firestore 集合的数据的小部件。

class MyScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: calendarQuery.getCalendarEntry(dateString),
builder: (BuildContext context, AsyncSnapshot snap) {
if (snap.hasData) {
List<Events> recipe = snap.data;
return Scaffold(
appBar: AppBar(
title: Text("Events"),
),
body: Column(
children: <Widget>[
...,
],
),
);
} else {
return LoadingScreen();
}
},
);
}
}

我检索了一个事件列表,然后我需要为每个事件获取一些额外的详细信息。我尝试做嵌套的 Futures 并想出了下面的代码。它生成一个 Future<Iterable<Future<Detail>>>结果是 MappedListIterable<DocumentSnapshot,Future<Recipe>>snap.data我无法处理它。

class CalendarQuery<T> {
...

Future<Iterable<Future<Detail>>> getCalendarEntry(String date, String type) async {
return await ref
.where("date", isEqualTo: date)
.getDocuments()
.then((data) {
return data.documents.map((doc) => Document<Details>(path: 'detailCollection/${doc.data["Event"]["SomeId"]}')
.getData());
});
}
}

我认为我在处理 future 的某些时候犯了错误,可能有一个正确的方法来做到这一点。

有人知道重构的方法吗 getCalendarEntry以便它返回 Future<List<T>> ?或者也许有更好的方法来解决这个问题?

最佳答案

您可以使用 Future.wait创建一个从 Iterable 完成一次所有 Futures 的 Future已经完成。

在您的场景中,您将替换 return await refreturn Future.wait(ref和一个右括号,以创建一个等待所有 Details 的 Future被检索。

关于firebase - FutureBuilder 的嵌套 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com