本地化/翻译移动的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,而在移动的上,它加载值。有什么问题吗。
1条答案
按热度按时间a64a0gku1#
Flutter web只使用assests,在我的移动的应用程序上,我有一个不在assets下的文件夹lang,它在移动应用程序中运行良好,但对于web,所有资产都在assets下。我把所有东西都移回了assets文件夹,它起作用了:(不得不删除lang文件夹)。