ChangeNotificationerProxyProvider正在获取null值



我是个新手。

在我的应用程序中,当用户登录时可以找到区域设置信息。因此,当用户登录时,它会将区域设置传递给AppLanguage。

我已经编写了ChangeNotificationProxyProvider来获取身份验证信息中的区域设置,并创建一个AppLanuage对象

在ChangeNotificationerProxyProvider中,我得到的appLang为null。auth对象正确地为NOT null。

我不明白的是为什么我会变得无效?

我确实在这里创造了它,对吧?

create: (_) => AppLanguage(),

它不应该作为更新的参数吗?

Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: Auth()),
ChangeNotifierProxyProvider<Auth, AppLanguage>(
create: (_) => AppLanguage(),
update: (ctx, auth, appLang) {
print(auth);
print(appLang);
}
//appLang.setLocale(auth == null ? 'en' : auth.language),
),
],
child: Consumer2<Auth, AppLanguage>(
builder: (ctx, auth, lang, child) => MaterialApp(
title: 'Test App',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
locale: lang.appLocal,
supportedLocales: [
const Locale('en', 'US'),
const Locale('ja', ''),
],
localizationsDelegates: [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
home: LandingView(),
),
),
);
}

我会尝试这样的东西:

ChangeNotifierProxyProvider<Auth, AppLanguage>(
create: (_) => AppLanguage(),
update: (ctx, auth, appLang) => appLang..update(auth),
),
class AppLanguage with ChangeNotifier {
void update(Auth auth) {
// Do some custom work based on myModel that may call `notifyListeners`
}
}

这样,您的孩子将能够在可用时获得正确的更新值。

您可以在提供者文档中查看更多如何正确处理这一问题。

相关内容

  • 没有找到相关文章

最新更新