使用 bloc 状态管理问题更改 flutter 本地化
Change flutter localizations with bloc state managment problem
每当有人决定在不重新启动应用程序的情况下更改应用程序语言时,我都想更改应用程序语言。使用 BLoC 一切正常。
我遇到的问题我真的不明白一件事。如果我传递给 MaterialApp
属性 title
TodosLocalizations.of(context).translate("appTitle")
它会抛出一个错误:
The method 'translate' was called on null.
Receiver: null
Tried calling: translate("appTitle")
但是当我评论这一行并使用 context
将相同的内容传递给 onGenerateTitle
属性 时,一切正常。
谁能回答我为什么会这样,否则我可能不明白在这种情况下如何使用这个 属性(标题)。
当你调用 onGenerateTitle: (BuildContext context) => TodosLocalizations.of(context).title 时,它使用了一个新的 BuildContext,它已经包含了 LocalizedDelagate(),因此可以用 TodosLocalizations.of(上下文).
当您在同一个构建方法中不使用 onGenerateTitle 直接使用它时,您会在创建 LocalizedDelagate() 之前引用上下文实例,因此 TodosLocalizations.of(context) 不会 return任何东西。
每当有人决定在不重新启动应用程序的情况下更改应用程序语言时,我都想更改应用程序语言。使用 BLoC 一切正常。
我遇到的问题我真的不明白一件事。如果我传递给 MaterialApp
属性 title
TodosLocalizations.of(context).translate("appTitle")
它会抛出一个错误:
The method 'translate' was called on null.
Receiver: null
Tried calling: translate("appTitle")
但是当我评论这一行并使用 context
将相同的内容传递给 onGenerateTitle
属性 时,一切正常。
谁能回答我为什么会这样,否则我可能不明白在这种情况下如何使用这个 属性(标题)。
当你调用 onGenerateTitle: (BuildContext context) => TodosLocalizations.of(context).title 时,它使用了一个新的 BuildContext,它已经包含了 LocalizedDelagate(),因此可以用 TodosLocalizations.of(上下文).
当您在同一个构建方法中不使用 onGenerateTitle 直接使用它时,您会在创建 LocalizedDelagate() 之前引用上下文实例,因此 TodosLocalizations.of(context) 不会 return任何东西。