繁体   English   中英

用块状态管理问题改变颤振定位

[英]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(context) 调用。

当您在同一个构建方法中不使用 onGenerateTitle 直接使用它时,您会在创建 LocalizedDelagate() 之前引用上下文实例,因此 TodosLocalizations.of(context) 不会返回任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM