gpt4 book ai didi

flutter - 当我在flutter的didChangeDependencies中调用多个提供程序时,显示错误

转载 作者:行者123 更新时间:2023-12-03 04:39:57 24 4
gpt4 key购买 nike

当我在didChangeDependencies中调用多个提供程序时。它向我显示此错误:“在处置产品后使用了产品,一旦在产品上调用了dispose(),则将无法再使用它。”
这是我在main.dart中的提供者。

MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => Auth(),
),
ChangeNotifierProxyProvider<Auth, Products>(
create: (_) => Products(null),
update: (ctx, auth, previousproduct) => Products(auth.userid)
// previousproduct == null ? [] : previousproduct.items),
),
ChangeNotifierProxyProvider<Auth, AddressData>(
// create: (context) => AddressData(null,[]),
update: (Context, auth, previousAddresses) => AddressData(auth.userid,
previousAddresses == null ? [] : previousAddresses.Addresses),
),
ChangeNotifierProxyProvider<Auth, Orders>(
// create: (context) => Orders(null, []),
update: (ctx, auth, previousorders) => Orders(
auth.userid, previousorders == null ? [] : previousorders.orders),
),
ChangeNotifierProvider(
create: (context) => Cart(),
),
],
这是我在homescreen.dart中的didchangedependencies。
void didChangeDependencies() {
final prod = Provider.of<Products>(context, listen: false);
// TODO: implement didChangeDependencies
prod.fetchandsetproduct();
prod.fetchcategoriesproduct();
final prod2 = Provider.of<Auth>(context,listen: false);
prod2.getcurrentuser();
super.didChangeDependencies();
}

最佳答案

You can call any number of provider

AboutusBlock aboutusBlock;
Loader loader;
HomeBlock homeBlock;
InitialBlock initialBlock;


@override
void didChangeDependencies() {
super.didChangeDependencies();
final aboutusBlock = Provider.of<AboutusBlock>(context);
final loader = Provider.of<Loader>(context);
final homeBlock = Provider.of<HomeBlock>(context);
final initialBlock = Provider.of<InitialBlock>(context);
if (this.aboutusBlock != aboutusBlock ||
this.loader != loader ||
this.homeBlock != homeBlock ||
this.initialBlock != initialBlock) {
this.loader = loader;
this.aboutusBlock = aboutusBlock;
this.homeBlock = homeBlock;
this.initialBlock = initialBlock;
Future.microtask((){
homeBlock.getHomeConfig(loader, initialBlock);
aboutusBlock.getAboutUsConfig(loader);});
}
}

关于flutter - 当我在flutter的didChangeDependencies中调用多个提供程序时,显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63415329/

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