Flutter web加载json文件与本地化/翻译返回null,而对于移动的它工作(意外的Null值)

m3eecexj  于 2023-05-02  发布在  Flutter
关注(0)|答案(1)|浏览(83)

本地化/翻译移动的android应用程序(以下Flutter)工程,en.json或lang文件夹中的任何已定义语言资产,例如lang/en。json或lang/fr。JSON将被翻译没有任何问题。设置为pubspec。YAML是正确的。

late Map<String, String> _localizedStrings;
Future<bool> load() async {
    String jsonString =
        await rootBundle.loadString('lang/${locale.languageCode}.json');
    Map<String, dynamic> jsonMap = json.decode(jsonString);

    _localizedStrings = jsonMap.map((key, value) {
      return MapEntry(key, value.toString());
    });

    return true;
  }

  String? translate(String key) {
    return _localizedStrings[key];
  }

pubspec声明:

assets:
    - lang/

当从json转换字符串时,调用如下:

child: Text(AppLocalizations.of(context)!.translate("SKIP")!),

这段代码非常适合移动的应用程序。但在Web上运行时,会抛出以下错误:

  • 意外的空值。*

如果我替换文本小部件如下:

child: Text("SKIP"),

null错误没有抛出,很明显,问题是当在Web上加载上面代码的json时,它返回null,而在移动的上,它加载值。有什么问题吗。

a64a0gku

a64a0gku1#

Flutter web只使用assests,在我的移动的应用程序上,我有一个不在assets下的文件夹lang,它在移动应用程序中运行良好,但对于web,所有资产都在assets下。我把所有东西都移回了assets文件夹,它起作用了:(不得不删除lang文件夹)。

相关问题