【问题标题】:Change flutter localizations with bloc state managment problem使用块状态管理问题更改颤振本地化
【发布时间】:2020-11-05 17:28:19
【问题描述】:

每当有人决定更改应用程序语言而不重新启动应用程序时,我想更改应用程序语言。使用 BLoC 一切正常。

我遇到的问题我真的不明白一件事。如果我传递给MaterialApp 属性title TodosLocalizations.of(context).translate("appTitle") 它会抛出一个错误:

The method 'translate' was called on null.
Receiver: null
Tried calling: translate("appTitle")

但是当我评论这一行并使用context 将相同的内容传递给onGenerateTitle 属性时,一切正常。

谁能回答我为什么会这样,或者我可能不明白在这种情况下如何使用这个属性(标题)。

【问题讨论】:

    标签: flutter dart internationalization flutter-bloc


    【解决方案1】:

    当你调用onGenerateTitle:(BuildContext context) => TodosLocalizations.of(context).title时,它使用了一个新的BuildContext,它已经包含了LocalizedDelagate(),所以可以用TodosLocalizations.of(context)调用。

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

    【讨论】:

    • 感谢您的回答。你已经很好地解释了我的问题:)!
    猜你喜欢
    • 2020-06-12
    • 2023-01-31
    • 2021-10-02
    • 2021-10-21
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2021-06-27
    相关资源
    最近更新 更多