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

Flutter 无法在颤振选项卡视图和列表视图中本地化字符串,flutter,localization,Flutter,Localization,当我尝试在TabBarView中本地化字符串时,会出现以下错误: NoSuchMethodError: The method 'translate' was called on null. Receiver: null. Tried calling: translate("settingsprofile"). import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:rewahub/vi

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

NoSuchMethodError: The method 'translate' was called on null. Receiver: null. Tried calling: translate("settingsprofile").

import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:rewahub/views/tabbar.dart';
import 'package:rewahub/widgets/app_localizations.dart';
import 'package:rewahub/widgets/styles.dart' ;
import 'package:firebase_database/firebase_database.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

import 'package:flutter/material.dart';




class MainHomePage extends StatefulWidget {
  MainHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MainHomePageState createState() => _MainHomePageState();
}

class _MainHomePageState extends State<MainHomePage> {
  final int initialIndex = 1;
  TextStyle style = TextStyle(fontFamily: 'Montserrat', fontSize: 20.0);



  String textValue = 'unknown';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //  localizationsDelegates: [
      //           AppLocalizations.delegate,
      //           GlobalMaterialLocalizations.delegate,
      //           GlobalWidgetsLocalizations.delegate,
      //         ],
      debugShowCheckedModeBanner: false,
      home: DefaultTabController(
        initialIndex: 1,
        length: 3,
        child: Scaffold(
          resizeToAvoidBottomPadding: false,
          appBar: new PreferredSize(
            preferredSize: const Size.fromHeight(150.0),
            child: new AppBar(
              centerTitle: false,
              title: Container(
                width: MediaQuery.of(context).size.width / 1.0,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: <Widget>[
                    Text(
                      "8956",
                      textAlign: TextAlign.left,
                      style: TextStyle(color: Colors.white, fontSize: 18.0),
                    ),
                    Image.asset(
                      'assets/images/rewahub_icon.png',
                      height: 50.0,
                    ),
                    Text(
                      "RS 434.25",
                      style: TextStyle(color: Colors.white, fontSize: 18.0),
                    ),
                  ],
                ),
              ),
              flexibleSpace: Container(
                decoration: BoxDecoration(gradient:grad),
              ),
              bottom: TabBar(
                tabs: <Widget>[
                  Tab(
                    child: new Text(

                       AppLocalizations.of(context).translate('tabvouchers'),
                      style: Theme.of(context)
                          .textTheme
                          .body1
                          .apply(color: Colors.white),
                    ),
                  ),
                  Tab(
                    child: new Text(

                     AppLocalizations.of(context).translate('tabpaynow'),
                      style: Theme.of(context)
                          .textTheme
                          .body1
                          .apply(color: Colors.white),
                    ),
                  ),
                  Tab(
                    child: new Text(

                   AppLocalizations.of(context).translate('tabpoints'),
                      style: Theme.of(context)
                          .textTheme
                          .body1
                          .apply(color: Colors.white),
                    ),
                  ),
                ],
              ),
            ),
          ),
          //body: TabBody(),
        ),
      ),
    );
  }
  }



NoSuchMethodError:对null调用了方法“translate”。接收者:空。尝试调用:translate(“settingsprofile”)。
导入“package:flatter_本地化/flatter_本地化.dart”;
导入“package:rewahub/views/tabbar.dart”;
导入“package:rewahub/widgets/app_localizations.dart”;
导入“package:rewahub/widgets/styles.dart”;
导入“package:firebase_database/firebase_database.dart”;
导入“package:firebase_messaging/firebase_messaging.dart”;
进口“包装:颤振/材料.省道”;
类main扩展StatefulWidget{
MainHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MainHomePageState createState()=>\u MainHomePageState();
}
类_MainHomePageState扩展状态{
最终int initialIndex=1;
TextStyle=TextStyle(fontFamily:'Montserrat',fontSize:20.0);
字符串textValue='未知';
@凌驾
小部件构建(构建上下文){
返回材料PP(
//本地化授权:[
//AppLocalizations.delegate,
//GlobalMaterialAllocalizations.delegate,
//GlobalWidgetsLocalizations.delegate,
//         ],
debugShowCheckedModeBanner:false,
主页:DefaultTabController(
初始索引:1,
长度:3,
孩子:脚手架(
resizeToAvoidBottomPadding:false,
appBar:新的PreferredSize(
首选尺寸:常量尺寸。从高度(150.0),
孩子:新的AppBar(
标题:错误,
标题:集装箱(
宽度:MediaQuery.of(context).size.width/1.0,
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
正文(
"8956",
textAlign:textAlign.left,
样式:TextStyle(颜色:Colors.white,fontSize:18.0),
),
影像资产(
“assets/images/rewahub_icon.png”,
身高:50.0,
),
正文(
“RS 434.25”,
样式:TextStyle(颜色:Colors.white,fontSize:18.0),
),
],
),
),
flexibleSpace:容器(
装饰:盒子装饰(渐变:渐变),
),
底部:选项卡栏(
选项卡:[
标签(
儿童:新文本(
AppLocalizations.of(context.translate('tab'),
风格:主题(上下文)
.文本主题
.body1
.应用(颜色:颜色。白色),
),
),
标签(
儿童:新文本(
AppLocalizations.of(context.translate('tabpaynow'),
风格:主题(上下文)
.文本主题
.body1
.应用(颜色:颜色。白色),
),
),
标签(
儿童:新文本(
AppLocalizations.of(context.translate('tabpoints'),
风格:主题(上下文)
.文本主题
.body1
.应用(颜色:颜色。白色),
),
),
],
),
),
),
//body:TabBody(),
),
),
);
}
}
我使用这行代码将密钥转换为本地化字符串:
AppLocalizations.of(context.translate('settingsprofile')

这在我的应用程序的所有其他屏幕上都非常有效,除了这个屏幕。有人知道为什么它不起作用以及如何解决它吗

有些事情我已经试过了:

传递主屏幕(包含所有TabbarView的屏幕)的上下文


将每个ListTile包装在一个构建器中

你说在其他屏幕上效果很好,那么我们需要小部件树。您可以共享查看到哪个tabBarView的小部件代码吗?为什么要评论
本地化委托
?它在main.dart中定义