Flutter: Changing the current tab in tab bar view using a button

后端 未结 5 1850
北荒
北荒 2020-12-12 15:24

I am creating an app that contains a tab bar on its homepage. I want to be able to navigate to one of the tabs using my FloatingActio

5条回答
  •  情深已故
    2020-12-12 15:38

    class Tab bar
    
        class TabBarScreen extends StatefulWidget {
          TabBarScreen({Key key}) : super(key: key);
        
          @override
          _TabBarScreenState createState() => _TabBarScreenState();
        }
        
        final List tabs = [
          Tab(text: 'Page1'),
          Tab(text: 'Page2'),
        ];
        
        class _TabBarScreenState extends State with SingleTickerProviderStateMixin {
        
          TabController tabController;
        
          @override
          void initState() {
            super.initState();
            tabController = new TabController(vsync: this, length: tabs.length);
          }
        
          @override
          void dispose() {
            tabController.dispose();
            super.dispose();
          }
        
          @override
          Widget build(BuildContext context) {
            return DefaultTabController(
              length: 2,
              child: Scaffold(
                backgroundColor: Theme.of(context).primaryColor,
                appBar: AppBar(
                  backgroundColor: Theme.of(context).primaryColor,
                  centerTitle: true,
                  shape: Border(bottom: BorderSide(color: Colors.white)),
                  title: Text("Tab Bar",),
                  bottom: TabBar(
                    controller: tabController,
                    tabs: tabs,
                    indicatorWeight: 5,
                    indicatorColor: Colors.white,
                    labelColor: Colors.white,
                  ),
                ),
                body: TabBarView(
                  controller: tabController,
                  children: [
                    PageOneScreen(controller: tabController),
                    PageTwoScreen(controller: tabController),
                  ],
                ),
              ),
            );
          }
        }
    
    class PageOne
    
        class PageOneScreen extends StatefulWidget {
        @override
        _PageOneScreenState createState() => _PageOneScreenState();
    
           PageOneScreen({controller}) {
              tabController = controller;
           }
        }
    
        TabController tabController;
    
        class _PageOneScreenState extends State {
          @override
          Widget build(BuildContext context) {
            return Column(
              children: [
                RaisedButton(
                  onPressed: () {
                    tabController.animateTo(1); // number : index page
                  },
                  child: Text(
                    "Go To Page 2",
                  ),
                ),
              ],
            );
          }
        }
    

提交回复
热议问题