我正在编写一个flutter应用程序,在其中使用flutter I18n软件包。它在大多数位置上都可以正常工作,但是当我尝试在创建另一个小部件的方法中使用它时,它会崩溃并显示以下错误。
在构建LightLocationWidget时引发了以下NoSuchMethodError(脏,依赖项:[_ LocalizationsScope- [GlobalKey#ced6b]],状态:_LightLocationWidgetState#3b5b6): getter'decodedMap'在null上被调用。 接收者:null 尝试调用:decodedMap 引发异常时,这是堆栈: Object.noSuchMethod(dart:core-patch / object_patch.dart:51:5) FlutterI18n._translateWithKeyFallback(包:flutter_i18n / flutter_i18n.dart:162:43) FlutterI18n.translate(package:flutter_i18n / flutter_i18n.dart:139:26)
在包装中使用此方法:
static String _translateWithKeyFallback(
final BuildContext context, final String key) {
final Map<String, dynamic> decodedStrings =
_retrieveCurrentInstance(context).decodedMap;
String translation = _decodeFromMap(decodedStrings, key);
if (translation == null) {
print("**$key** not found");
translation = key;
}
return translation;}
我的引发异常的代码:
@override
Widget build(BuildContext context) {
return Row(
children: [
Padding(
padding: EdgeInsets.all(10),
child: getLightButton(1),
)
...
ButtonTheme getLightButton(int typeNumber) {
return ButtonTheme(
child: FlatButton(
child: Column(children: [Text(FlutterI18n.translate(context, "lightlocation")
...
当我直接在小部件上使用此键时,它可以正常工作。
答案 0 :(得分:0)
我发现了问题。我两次使用MaterialApp
。一次在我的主屏幕上,也在另一个屏幕上。在另一个屏幕上切换到Scaffold
即可解决问题。