【发布时间】:2021-12-07 15:37:39
【问题描述】:
我正在使用提供程序包进行颤振。 https://pub.dev/packages/provider
在 Appstart 上,我使用以下提供程序:
late Future<List<Art>> art;
late Future<List<Music>> music;
late Future<List<Furniture>> furniture;
late Future<List<Clothing>> clothing;
late Future<List<Flower>> flowers;
late Future<List<Interieur>> interieur;
late Future<List<Collectible>> allCollectibles;
@override
void initState() {
super.initState();
art = getAllArts();
music = getAllMusic();
furniture = getAllFurniture();
clothing = getAllClothing();
flowers = getAllFlowers();
interieur = getAllInterieur();
allCollectibles = () async {
return [
...await art,
...await music,
...await furniture,
...await clothing,
...await flowers,
...await interieur,
];
}();
}
@override
Widget build(BuildContext context) {
timeDilation = 1;
return FutureBuilder(
future: settings,
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return Center(child: CircularProgressIndicator());
}
return FutureProvider<List<Collectible>>(
create: (context) => allCollectibles, initialData: [],
),});
稍后,我使用这个消费者来检索它:
@override
Widget build(BuildContext context) {
return Consumer<List<Collectible>>(builder: (context, collectibles, child) {
return sendCollectibleDataFull(collectibles),
});
}
方法sendCollectibleDataFull 中的列表有时存在有时不存在。
如果通话时为空,它将保持为空。
我已更新为 nullsafety,因此 initialData: [], 是强制性的。在此之前,我总是从中得到一份清单。
我可以告诉我的消费者/提供者在我检索数据之前等待数据吗?
【问题讨论】: