Tabs 如何在颤振中导航时更改默认选项卡?

Tabs 如何在颤振中导航时更改默认选项卡?,tabs,flutter,flutter-layout,Tabs,Flutter,Flutter Layout,我有以下用于选项卡栏页面的代码: class HomePage extends StatefulWidget { static String tag = 'home-page'; @override _homepage createState() => new _homepage(); } class _homepage extends State<HomePage> with TickerProviderStateMixin{ AnimationC

我有以下用于选项卡栏页面的代码:

class HomePage extends StatefulWidget {


  static String tag = 'home-page';

  @override
  _homepage createState() => new _homepage();
}

class _homepage extends State<HomePage> with TickerProviderStateMixin{


  AnimationController percentageAnimationController;
  TabController _tabController;


  @override
  void initState() {
    _tabController = new TabController(length: 3, vsync: this);


    super.initState();
  }

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

  @override
  Widget build(BuildContext context) {

    return new Scaffold(

        bottomNavigationBar: new Material(
          color: Colors.white,
          child: new TabBar(
              controller: _tabController,
              indicatorColor: Theme.Colors.loginGradientStart,
              labelColor: Theme.Colors.loginGradientStart,
              tabs: <Widget>[
                new Tab(
                  icon: new Icon(wind_icon),
                ),
                new Tab(
                  icon: new Icon(chart_icon),
                ),
                new Tab(
                  icon: new Icon(settings_icon),
                ),
              ]
          ),
        ),
        body:
        new TabBarView(
          children: <Widget>[

            TabOne(),

            TabTwo(),

            TabThree(),

            ],
          controller: _tabController,
        ),
    );
  }
}
类主页扩展StatefulWidget{
静态字符串标记='主页';
@凌驾
_主页createState()=>新建主页();
}
类_主页使用TickerProviderStateMixin扩展状态{
AnimationController百分比AnimationController;
TabController\u TabController;
@凌驾
void initState(){
_tabController=新的tabController(长度:3,vsync:this);
super.initState();
}
@凌驾
无效处置(){
_tabController.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
底部导航栏:新材质(
颜色:颜色,白色,
孩子:新的TabBar(
控制器:\ tab控制器,
指示颜色:Theme.Colors.loginGradientStart,
labelColor:Theme.Colors.loginGradientStart,
选项卡:[
新标签(
图标:新图标(风图标),
),
新标签(
图标:新图标(图表图标),
),
新标签(
图标:新图标(设置图标),
),
]
),
),
正文:
新选项卡视图(
儿童:[
TabOne(),
TabTwo(),
tab三(),
],
控制器:\ tab控制器,
),
);
}
}
现在,如果我导航到此页面,它会自动打开第一个选项卡,但我想打开第二个选项卡,而不是第一个选项卡,即选项卡索引1

我能够发现,我们可以通过使用\u tabController.animateTo(1)来实现这一点
但我想知道如何从其他页面的按钮按下来实现这一点

您可以使用初始索引:

_tabController = new TabController(length: 3, vsync: this, initialIndex: 1);

我也有类似的问题。我创建了一个名为“globals.dart”的文件

我的应用程序/globals.dart

library my_app.globals;

import 'package:flutter/material.dart';

TabController tabController;
设置选项卡控制器后,将引用复制到此选项卡

\u主页类

import 'package:my_app/globals.dart' as globals;

@override
void initState() {
    _tabController = new TabController(length: 3, vsync: this);

    globals.tabController = _tabController;

    super.initState();
}
import 'package:my_app/globals.dart' as globals;

...(in any function you want)...

globals.tabController.animateTo(2);
其他页面类

import 'package:my_app/globals.dart' as globals;

@override
void initState() {
    _tabController = new TabController(length: 3, vsync: this);

    globals.tabController = _tabController;

    super.initState();
}
import 'package:my_app/globals.dart' as globals;

...(in any function you want)...

globals.tabController.animateTo(2);