flutter-web中如何通过代码切换语言

Mar*_*ark 5 flutter flutter-web flutter-intl

我在 flutter-web 应用程序中切换语言时遇到问题。我将所需的依赖项添加到了package.yml.

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.16.1

  flutter_localizations:
      sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  intl_translation: ^0.17.9
Run Code Online (Sandbox Code Playgroud)

然后我初始化了intlMaterialApp 中的东西。

 [...]
 child: MaterialApp(
        localizationsDelegates: [
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          S.delegate,
        ],
        supportedLocales: S.delegate.supportedLocales,
        [...]
Run Code Online (Sandbox Code Playgroud)

这是我希望更改区域设置的代码。

                Text(S.of(context).language),
                RaisedButton(
                  child: Text("deutsch"),
                  onPressed: () {
                    S.load(Locale('de'));
                  },
                ),
                RaisedButton(
                  child: Text("englisch"),
                  onPressed: () {
                    S.load(Locale('en'));
                  },
Run Code Online (Sandbox Code Playgroud)

这是arb包含翻译的两个文件。

{
    "language": "Deutsch"
}
Run Code Online (Sandbox Code Playgroud)
{
    "language": "English"
}
Run Code Online (Sandbox Code Playgroud)

一切都编译完毕,我可以访问这些S.of(context)类。我确信我错过了什么。因为如果我在 Android 模拟器中启动,语言切换也不起作用。

在模拟器中切换系统区域设置会更改语言。

我将不胜感激任何帮助或提示。