Flutter ChangeNotifierProxy提供程序获取空值
我是个新手 在我的应用程序中,当用户登录时可以找到区域设置信息。 因此,当用户登录时,它会将区域设置传递给AppLanguage 我已经编写了ChangeNotifierProxyProvider来获取认证信息中的区域设置并创建一个AppLanuage对象 在ChangeNotifierProxyProvider中,我将appLang设置为null。验证对象正确地不为空 我不明白为什么我会变空 是我在这里创造的,对吗Flutter ChangeNotifierProxy提供程序获取空值,flutter,null,flutter-change-notifier,Flutter,Null,Flutter Change Notifier,我是个新手 在我的应用程序中,当用户登录时可以找到区域设置信息。 因此,当用户登录时,它会将区域设置传递给AppLanguage 我已经编写了ChangeNotifierProxyProvider来获取认证信息中的区域设置并创建一个AppLanuage对象 在ChangeNotifierProxyProvider中,我将appLang设置为null。验证对象正确地不为空 我不明白为什么我会变空 是我在这里创造的,对吗 create: (_) => AppLanguage(), 它不应该作
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(),
),
),
);
}
小部件构建(构建上下文){
回程多供应商(
供应商:[
ChangeNotifierProvider.value(值:Auth()),
ChangeNotifierProxyProvider(
创建:()=>ApplLanguage(),
更新:(ctx、认证、应用程序){
打印(auth);
印刷(阿普朗);
}
//appLang.setLocale(auth==null?'en':auth.language),
),
],
儿童:消费者2(
生成器:(ctx、auth、lang、child)=>MaterialApp(
标题:“测试应用程序”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
地点:lang.appLocal,
支持的区域设置:[
常量区域设置('en','US'),
常量区域设置('ja',''),
],
本地化授权:[
AppLocalizations.delegate,
GlobalMaterialAllocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
主页:LandingView(),
),
),
);
}
我会尝试以下方法:
ChangeNotifierProxyProvider<Auth, AppLanguage>(
create: (_) => AppLanguage(),
update: (ctx, auth, appLang) => appLang..update(auth),
),
这样,您的孩子将能够在可用时获得正确的更新值
您可以在上查看更多如何正确处理此问题。我会尝试以下方法:
ChangeNotifierProxyProvider<Auth, AppLanguage>(
create: (_) => AppLanguage(),
update: (ctx, auth, appLang) => appLang..update(auth),
),
这样,您的孩子将能够在可用时获得正确的更新值
您可以在上查看如何正确处理此问题。在“appLang..update(auth)”中双点的作用是什么?根据新的
auth
值返回带有新值的appLang
模型“appLang..update(auth)”中双点的作用是什么do?根据新的auth
值,返回带有新值的appLang
模型