在 flutter 中更新 ChangeNotifierProxyProvider 的构建器
builder to update in ChangeNotifierProxyProvider on flutter
首先感谢您检查我的问题。
我是初学者,我有这段代码:
ChangeNotifierProxyProvider<Auth, ImgProvider>(
builder: (ctx, auth, previousItem) => ImgProvider(
auth.token,
auth.userId,
previousItem == null ? [] : previousItem.items,
),
),
ChangeNotifierProxyProvider
'。
:
ChangeNotifierProxyProvider<Auth, ImgProvider>(
update: (ctx, auth, previousItem) => ImgProvider(
auth.token,
auth.userId,
previousItem == null ? [] : previousItem.items,
),
" '' ."
:“”。
!
解决办法是改成这样:
ChangeNotifierProxyProvider<Auth, ImgProvider>(
create: (ctx) => ImgProvider(),
update: (ctx, auth, previousItem) => previousItem
..receiveToken(
auth, previousItem == null ? [] : previousItem.items),
),
并在 ImgProvider() 中创建一个函数,如下所示:
void receiveToken(Auth auth, List<ImgVar> items) {
authToken = auth.token;
userId = auth.userId;
_items = items;
}
如果class有constrictor你必须像这样让参数为null
ChangeNotifierProvider(create: (ctx) => Auth()),
ChangeNotifierProxyProvider<Auth, ProductsProvider>(
create: (ctx) => ProductsProvider('', []),
update: (ctx, auth, previousProductsProviderState) =>
ProductsProvider(
auth.token, previousProductsProviderState!.items),
),
首先感谢您检查我的问题。
我是初学者,我有这段代码:
ChangeNotifierProxyProvider<Auth, ImgProvider>(
builder: (ctx, auth, previousItem) => ImgProvider(
auth.token,
auth.userId,
previousItem == null ? [] : previousItem.items,
),
),
ChangeNotifierProxyProvider
'。 :
ChangeNotifierProxyProvider<Auth, ImgProvider>(
update: (ctx, auth, previousItem) => ImgProvider(
auth.token,
auth.userId,
previousItem == null ? [] : previousItem.items,
),
" '' ."
:“”。 !
解决办法是改成这样:
ChangeNotifierProxyProvider<Auth, ImgProvider>(
create: (ctx) => ImgProvider(),
update: (ctx, auth, previousItem) => previousItem
..receiveToken(
auth, previousItem == null ? [] : previousItem.items),
),
并在 ImgProvider() 中创建一个函数,如下所示:
void receiveToken(Auth auth, List<ImgVar> items) {
authToken = auth.token;
userId = auth.userId;
_items = items;
}
如果class有constrictor你必须像这样让参数为null
ChangeNotifierProvider(create: (ctx) => Auth()),
ChangeNotifierProxyProvider<Auth, ProductsProvider>(
create: (ctx) => ProductsProvider('', []),
update: (ctx, auth, previousProductsProviderState) =>
ProductsProvider(
auth.token, previousProductsProviderState!.items),
),