Flutter 如何从另一个dart文件按钮点击事件导航选项卡。我正在使用Tabmanager。。但它只适用于同一个省道锉。我开始颤抖

Flutter 如何从另一个dart文件按钮点击事件导航选项卡。我正在使用Tabmanager。。但它只适用于同一个省道锉。我开始颤抖,flutter,Flutter,我的问题是关于 如何从另一个dart文件按钮点击事件导航选项卡。我正在使用Tabmanager。。但它只适用于同一个省道文件。我开始飘动。 我在选项卡管理器中出错。\u myTabbedPageKey.currentState.\u tabController .animateTo(1) 提前谢谢 主飞镖 void main(){ runApp(MyApp()); } 类MyApp扩展了StatefulWidget{ constmyapp({Key}):超级(Key:Key); @凌驾 _MyA

我的问题是关于

如何从另一个dart文件按钮点击事件导航选项卡。我正在使用Tabmanager。。但它只适用于同一个省道文件。我开始飘动。 我在选项卡管理器中出错。\u myTabbedPageKey.currentState.\u tabController .animateTo(1) 提前谢谢

主飞镖

void main(){
runApp(MyApp());
}
类MyApp扩展了StatefulWidget{
constmyapp({Key}):超级(Key:Key);
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:DefaultTabController(
长度:2,
孩子:脚手架(
appBar:appBar(
底部:选项卡栏(
选项卡:[
选项卡(图标:图标(图标方向车)),
选项卡(图标:图标(图标方向和交通)),
],
),
标题:文本(“选项卡演示”),
),
正文:选项卡视图(
儿童:[
新TabA(),
新TabB(),
],
),
),
),
);
}
}
类TabManager扩展StatefulWidget{
静态final_myTabbedPageKey=new GlobalKey();
@凌驾
_TabManagerState createState()=>\u TabManagerState();
}
类_TabManagerState扩展状态{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
debugShowCheckedModeBanner:false,
标题:“颤振演示”,
主页:新MyApp(
键:TabManager.\u myTabbedPageKey,
),
);
}
}
这里tabA.dart是单独的省道文件。。 错误表现为 没有为类型“TabManager”定义getter“\u myTabbedPageKey”。

塔巴镖

类TabA扩展StatefulWidget{
@凌驾
_TabAState createState()=>u TabAState();
}
类_TabAState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
儿童:手势检测器(
onTap:(){
TabManager.\u myTabbedPageKey.currentState.\u tabController
.animateTo(1);
},
子项:文本('taba'),
);
}
}

尝试使用与此代码非常相似的代码

工作演示

进口“包装:颤振/材料.省道”

void main(){

runApp(MyApp()); }

类MyApp扩展了无状态小部件{

@凌驾

小部件构建(构建上下文){

} }

类Home扩展了无状态小部件{

@凌驾 小部件构建(构建上下文){

} }

类消息扩展了无状态小部件{

@凌驾

小部件构建(构建上下文){

} }

类调用扩展了无状态小部件{

@凌驾

小部件构建(构建上下文){

}
}

但我想在点击另一个dart文件中的文本时设置(移动)选项卡的动画。好的,我也尝试再次执行此代码,简单地创建一个主文件名文件,并将其导入主文件中,如导入“home.dart”;而且它只在顶部使用相同的代码,只需添加这一行import“package:tabflatter_app/home.dart”;为新页面导入添加home.dart文件“package:flatter/material.dart”;类Home扩展了无状态小部件{@override Widget build(BuildContext context){返回MaterialApp(debugShowCheckedModeBanner:false,Home:Scaffold(body:Center)(child:Text('Home',style:TextStyle(fontSize:21),))}而且没有其他变化
    void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 2,
        child: Scaffold(
          appBar: AppBar(
            bottom: TabBar(
              tabs: [
                Tab(icon: Icon(Icons.directions_car)),
                Tab(icon: Icon(Icons.directions_transit)),
              ],
            ),
            title: Text('Tabs Demo'),
          ),
          body: TabBarView(
            children: [
              new TabA(),
              new TabB(),
            ],
          ),
        ),
      ),
    );
  }
}

class TabManager extends StatefulWidget {
  static final _myTabbedPageKey = new GlobalKey<_MyAppState>();
  @override
  _TabManagerState createState() => _TabManagerState();
}
class _TabManagerState extends State<TabManager> {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      home: new MyApp(
        key: TabManager._myTabbedPageKey,
      ),
    );
  }
}
    class TabA extends StatefulWidget {
  @override
  _TabAState createState() => _TabAState();
}

class _TabAState extends State<TabA> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: GestureDetector(
          onTap: () {
            TabManager._myTabbedPageKey.currentState._tabController
                .animateTo(1);
          },
          child: Text('taba')),
    );
  }
}
return MaterialApp(

  home: DefaultTabController(

    length: 3,

    child: Scaffold(

      appBar: AppBar(

        bottom: TabBar(
          tabs: [

            Tab(text: 'Home'),

            Tab(text: 'Messages',),

            Tab(text: 'Call'),

          ],
        ),
        title: Text('MY App'),

      ),

      body: TabBarView(

        children: [
         new  Home(),

         new  Messages(),

          new Call()
        ],
      ),
    ),
  ),
);
return MaterialApp(

    debugShowCheckedModeBanner: false,

    home: Scaffold(

        body: Center(

            child:
            Text('Home',
              style: TextStyle(fontSize: 21),)
        )
    )
);
return MaterialApp(

    debugShowCheckedModeBanner: false,

    home: Scaffold(

        body: Center(

            child:
            Text('Meassage',
              style: TextStyle(fontSize: 21),)
        )
    )
);
return MaterialApp(

    debugShowCheckedModeBanner: false,

    home: Scaffold(

        body: Center(

            child:
            Text('Call',
              style: TextStyle(fontSize: 21),)
        )
    )
);