Flutter 无法在颤振选项卡视图中本地化字符串
当我尝试在TabBarView中本地化字符串时,会出现以下错误: NoSuchMethodError:对null调用了方法“translate”。接收者:空。尝试调用:translate(“用户名”) 我使用这行代码将密钥转换为本地化字符串:Flutter 无法在颤振选项卡视图中本地化字符串,flutter,localization,Flutter,Localization,当我尝试在TabBarView中本地化字符串时,会出现以下错误: NoSuchMethodError:对null调用了方法“translate”。接收者:空。尝试调用:translate(“用户名”) 我使用这行代码将密钥转换为本地化字符串: AppLocalizations.of(context).translate('username') 这在我的应用程序的所有其他屏幕上都非常有效,除了这个。有人知道为什么它不起作用以及如何解决它吗 有些事情我已经试过了: 传递主屏幕(包含所有Tabba
AppLocalizations.of(context).translate('username')
这在我的应用程序的所有其他屏幕上都非常有效,除了这个。有人知道为什么它不起作用以及如何解决它吗
有些事情我已经试过了:
- 传递主屏幕(包含所有TabbarView的屏幕)的上下文
- 在生成器中包装每个ListTile
- 在生成器中包装ListView
class AccountScreen扩展了无状态小部件{
最终字符串用户名;
最终字符串电子邮件;
最终积分;
AccountScreen(this.username、this.email、this.points);
@凌驾
小部件构建(构建上下文){
返回容器(
孩子:填充(
填充:边缘设置。全部(10),
子:ListView(
儿童:[
列表砖(
标题:Text(AppLocalizations.of(context.translate('username')),
字幕:文本(用户名),
),
列表砖(
标题:
文本(AppLocalizations.of(context.translate)(“电子邮件地址”),
字幕:文本(电子邮件),
),
列表砖(
标题:Text(AppLocalizations.of(context).translate('points'),
副标题:文本(“$points”),
),
],
),
),
);
}
}
我发现了同样的问题。但在我的例子中,我使用的是MaterialApp
而没有localizationsDelegates
(我指的是所有文件,不仅仅是main.dart
)
因此,我在所有小部件中的每个MaterialApp
上添加localizationsDelegates
e、 g
我发现了同样的问题。但在我的例子中,使用
MaterialApp
,而不使用localizationsDelegates
(我指的是所有文件,不仅仅是main.dart
)
因此,我在所有小部件中的每个MaterialApp
上添加localizationsDelegates
e、 g
问题是,应用程序中有多个MaterialApp小部件导致本地化过程中出现一些冲突。删除多余的MaterialApp小部件解决了问题。问题是,应用程序中有多个MaterialApp小部件导致本地化过程中出现一些冲突移除多余的MaterialApp小部件修复了这个问题
class AccountScreen extends StatelessWidget {
final String username;
final String email;
final int points;
AccountScreen(this.username, this.email, this.points);
@override
Widget build(BuildContext context) {
return Container(
child: Padding(
padding: EdgeInsets.all(10),
child: ListView(
children: <Widget>[
ListTile(
title: Text(AppLocalizations.of(context).translate('username')),
subtitle: Text(username),
),
ListTile(
title:
Text(AppLocalizations.of(context).translate('email_address')),
subtitle: Text(email),
),
ListTile(
title: Text(AppLocalizations.of(context).translate('points')),
subtitle: Text('$points'),
),
],
),
),
);
}
}
MaterialApp(
localizationsDelegates: [
MainLocalizationsDelegate.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
home: DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
brightness: Brightness.light,
bottom: TabBar(
tabs: [
Tab(text: MainLocalizations.of(context).food),
Tab(text: MainLocalizations.of(context).car),
],
),
),
body: TabBarView(
children: [
TabA(),
TabB(),
],
),
),
),
);