【发布时间】:2019-10-18 04:40:40
【问题描述】:
我正在尝试将数据从一个小部件传递到树下的另一个小部件。这是我从一个屏幕导航到另一个屏幕的代码:
final page = LanguagePreferenceProvider(child: UserNameScreen(),language: _currentNationality,);
navigate(context, page);
navigate()方法:
void navigate(BuildContext context, Widget page) {
Navigator.pushReplacement(
context,
PageRouteBuilder(
pageBuilder: (context, anim1, anim2) => page,
transitionsBuilder: (context, anim1, anim2, child) {
return SlideTransition(
position: Tween<Offset>(
end: Offset(0, 0), begin: Offset(1, 0))
.animate(anim1),
child: page,
);
},
),
);
}
现在在另一个屏幕中,我正在使用它来获取值:
@override
void didChangeDependencies() {
super.didChangeDependencies();
_selectedLanguage = LanguagePreferenceProvider.of(context).language;
我的 InheritedWidget 类:
class LanguagePreferenceProvider extends InheritedWidget{
final String language;
LanguagePreferenceProvider({
Widget child,
this.language,
}) : super(child: child);
@override
bool updateShouldNotify(LanguagePreferenceProvider oldWidget) => language != oldWidget.language;
static LanguagePreferenceProvider of(BuildContext context) => context.inheritFromWidgetOfExactType(LanguagePreferenceProvider);
}
但我收到以下错误:
The getter 'language' was called on null.
【问题讨论】:
标签: flutter