Flutter TabBar没有TabController

Flutter TabBar没有TabController,flutter,dart,Flutter,Dart,我正在尝试向我的应用程序添加一个选项卡,但在构建时遇到了一些问题。我已经按照文档添加了一个tabController,但是我得到一个错误,说我没有。我的代码如下 class _MyAppState extends State<MyApp> with TickerProviderStateMixin { TabController _controller; final List<Tab> topTabs = <Tab>[ new Tab(text

我正在尝试向我的应用程序添加一个选项卡,但在构建时遇到了一些问题。我已经按照文档添加了一个tabController,但是我得到一个错误,说我没有。我的代码如下

class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
  TabController _controller;
  final List<Tab> topTabs = <Tab>[
    new Tab(text: 'Profile'),
    new Tab(text: 'Match'),
    new Tab(text: 'Chat'),
  ];

  @override
  void initState() {
   super.initState();

   _controller = TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
      return  Scaffold(
            appBar: AppBar(
              title: Text('MyApp'),
              bottom: TabBar(
                  controller: _controller,
                  tabs: topTabs,
              ),
            ),
            body: TabBarView(
                controller: _controller,
                children: [
              new Container(
                color: Colors.lightBlueAccent,
                child: Center(child: Text('Profile', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.purpleAccent,
                child: Center(child: Text('Match', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.lightGreenAccent,
                child: Center(child: Text('Chat', style: TextStyle(color: Colors.white),),),
            )
            ]),
          );
  }
}
class\u MyAppState使用TickerProviderStateMixin扩展状态{
TabController\u控制器;
最终列表topTabs=[
新选项卡(文本:“配置文件”),
新选项卡(文本:“匹配”),
新建选项卡(文本:“聊天”),
];
@凌驾
void initState(){
super.initState();
_controller=TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“MyApp”),
底部:选项卡栏(
控制器:_控制器,
选项卡:顶部选项卡,
),
),
正文:选项卡视图(
控制器:_控制器,
儿童:[
新容器(
颜色:Colors.lightBlueAccent,
子:居中(子:文本('Profile',样式:TextStyle(颜色:Colors.white),),),
),
新容器(
颜色:颜色。紫红色,
子:居中(子:文本('Match',样式:TextStyle(颜色:Colors.white),),),
),
新容器(
颜色:颜色。浅绿色口音,
child:Center(child:Text('Chat',style:TextStyle(颜色:Colors.white),),),
)
]),
);
}
}
准确的误差是颤振:══╡ WIDGETS库捕获到异常╞═══════════════════════════════════════════════════════════ 颤振:在构建MediaQuery(MediaQueryData)(大小:size(375.0667.0))时抛出以下断言, 颤振:devicePixelRatio:2.0,textScaleFactor:1.0,平台亮度:亮度。灯光,填充: 颤振:EdgeInsets.zero,视图填充:EdgeInsets.zero,视图插入:EdgeInsets.zero,物理深度: 颤振:1.7976931348623157e+308,始终使用24小时格式:假,可访问颤振:假,高对比度: flatter:false,disableAnimations:false,invertColor:false,boldText:false): 颤振:TabBar没有TabBar控制器。 颤振:创建选项卡栏时,必须使用“控制器”提供显式选项卡控制器 属性,否则必须确保选项卡栏上方有一个DefaultTabController。
颤振:在这种情况下,既没有显式控制器,也没有默认控制器。

我可以毫无问题地运行它,您是否在创建项目时过度编写了MyApp示例,该项目的MaterialApp包含您的代码或在main之前的内容

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyAppState()
    );
  }
}

class MyAppState extends StatefulWidget{
  
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyAppState> with TickerProviderStateMixin {
  TabController _controller;
  final List<Tab> topTabs = <Tab>[
    new Tab(text: 'Profile'),
    new Tab(text: 'Match'),
    new Tab(text: 'Chat'),
  ];

  @override
  void initState() {
   super.initState();

   _controller = TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
      return  Scaffold(
            appBar: AppBar(
              title: Text('MyApp'),
              bottom: TabBar(
                  controller: _controller,
                  tabs: topTabs,
              ),
            ),
            body: TabBarView(
                controller: _controller,
                children: [
              new Container(
                color: Colors.lightBlueAccent,
                child: Center(child: Text('Profile', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.purpleAccent,
                child: Center(child: Text('Match', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.lightGreenAccent,
                child: Center(child: Text('Chat', style: TextStyle(color: Colors.white),),),
            )
            ]),
          );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
主页:MyAppState()
);
}
}
类MyAppState扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState使用TickerProviderStateMixin扩展状态{
TabController\u控制器;
最终列表topTabs=[
新选项卡(文本:“配置文件”),
新选项卡(文本:“匹配”),
新建选项卡(文本:“聊天”),
];
@凌驾
void initState(){
super.initState();
_controller=TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“MyApp”),
底部:选项卡栏(
控制器:_控制器,
选项卡:顶部选项卡,
),
),
正文:选项卡视图(
控制器:_控制器,
儿童:[
新容器(
颜色:Colors.lightBlueAccent,
子:居中(子:文本('Profile',样式:TextStyle(颜色:Colors.white),),),
),
新容器(
颜色:颜色。紫红色,
子:居中(子:文本('Match',样式:TextStyle(颜色:Colors.white),),),
),
新容器(
颜色:颜色。浅绿色口音,
child:Center(child:Text('Chat',style:TextStyle(颜色:Colors.white),),),
)
]),
);
}
}

我可以毫无问题地运行它,您是否在创建项目时过度编写了MyApp示例,该项目的MaterialApp包含您的代码或在主应用程序之前的内容

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyAppState()
    );
  }
}

class MyAppState extends StatefulWidget{
  
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyAppState> with TickerProviderStateMixin {
  TabController _controller;
  final List<Tab> topTabs = <Tab>[
    new Tab(text: 'Profile'),
    new Tab(text: 'Match'),
    new Tab(text: 'Chat'),
  ];

  @override
  void initState() {
   super.initState();

   _controller = TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
      return  Scaffold(
            appBar: AppBar(
              title: Text('MyApp'),
              bottom: TabBar(
                  controller: _controller,
                  tabs: topTabs,
              ),
            ),
            body: TabBarView(
                controller: _controller,
                children: [
              new Container(
                color: Colors.lightBlueAccent,
                child: Center(child: Text('Profile', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.purpleAccent,
                child: Center(child: Text('Match', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.lightGreenAccent,
                child: Center(child: Text('Chat', style: TextStyle(color: Colors.white),),),
            )
            ]),
          );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
主页:MyAppState()
);
}
}
类MyAppState扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState使用TickerProviderStateMixin扩展状态{
TabController\u控制器;
最终列表topTabs=[
新选项卡(文本:“配置文件”),
新选项卡(文本:“匹配”),
新建选项卡(文本:“聊天”),
];
@凌驾
void initState(){
super.initState();
_controller=TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“MyApp”),
底部:选项卡栏(
控制器:_控制器,
选项卡:顶部选项卡,
),
),
正文:选项卡视图(
控制器:_控制器,
儿童:[
新康泰