Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 无法在颤振选项卡视图中本地化字符串_Flutter_Localization - Fatal编程技术网

Flutter 无法在颤振选项卡视图中本地化字符串

Flutter 无法在颤振选项卡视图中本地化字符串,flutter,localization,Flutter,Localization,当我尝试在TabBarView中本地化字符串时,会出现以下错误: NoSuchMethodError:对null调用了方法“translate”。接收者:空。尝试调用:translate(“用户名”) 我使用这行代码将密钥转换为本地化字符串: AppLocalizations.of(context).translate('username') 这在我的应用程序的所有其他屏幕上都非常有效,除了这个。有人知道为什么它不起作用以及如何解决它吗 有些事情我已经试过了: 传递主屏幕(包含所有Tabba

当我尝试在TabBarView中本地化字符串时,会出现以下错误:

NoSuchMethodError:对null调用了方法“translate”。接收者:空。尝试调用:translate(“用户名”)

我使用这行代码将密钥转换为本地化字符串:

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(),
            ],
          ),
        ),
      ),
    );