flutter實現appbar下選項卡切換
本文實例為大傢分享瞭flutter實現appbar下選項卡切換的具體代碼,供大傢參考,具體內容如下
TabBar 、Tab、TabBarView 結合實現
這裡實現的是appbar下的選項卡
import 'package:flutter/material.dart'; /** * 有狀態StatefulWidget * 繼承於 StatefulWidget,通過 State 的 build 方法去構建控件 */ class TabBarAndTopTab extends StatefulWidget { 通過構造方法傳值 TabBarAndTopTab(); //主要是負責創建state @override _DemoStateWidgetState createState() => _DemoStateWidgetState(); } /** * 在 State 中,可以動態改變數據 * 在 setState 之後,改變的數據會觸發 Widget 重新構建刷新 */ class _DemoStateWidgetState extends State<TabBarAndTopTab> with SingleTickerProviderStateMixin { _DemoStateWidgetState(); List tabs = ["首頁", "發現", "我的", "設置"]; //用於控制/監聽Tab菜單切換 //TabBar和TabBarView正是通過同一個controller來實現菜單切換和滑動狀態同步的。 TabController tabController; @override void initState() { ///初始化,這個函數在生命周期中隻調用一次 super.initState(); tabController = TabController(length: tabs.length, vsync: this); } @override void didChangeDependencies() { ///在initState之後調 Called when a dependency of this [State] object changes. super.didChangeDependencies(); } @override Widget build(BuildContext context) { return buildTabScaffold(); } //通過“bottom”屬性來添加一個導航欄底部tab按鈕組,將要實現的效果如下: Widget buildTabScaffold() { return Scaffold( appBar: AppBar( title: Text('標題'), //設置選項卡 bottom: buildTabBar(), //設置標題居中 centerTitle: true, ), //設置選項卡對應的page body: buildBodyView(), ); } //當整個頁面dispose時,記得把控制器也dispose掉,釋放內存 @override void dispose() { tabController.dispose(); super.dispose(); } buildBodyView() { //構造 TabBarView Widget tabBarBodyView = TabBarView( controller: tabController, //創建Tab頁 children: tabs.map((e) { return Container( alignment: Alignment.center, child: Text(e, textScaleFactor: 1), ); }).toList(), ); return tabBarBodyView; } buildTabBar() { //構造 TabBar Widget tabBar = TabBar( //tabs 的長度超出屏幕寬度後,TabBar,是否可滾動 //設置為false tab 將平分寬度,為true tab 將會自適應寬度 isScrollable: false, //設置tab文字得類型 labelStyle: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), //設置tab選中得顏色 labelColor: Colors.white, //設置tab未選中得顏色 unselectedLabelColor: Colors.white70, //設置自定義tab的指示器,CustomUnderlineTabIndicator //若不需要自定義,可直接通過 //indicatorColor 設置指示器顏色 //indicatorWight 設置指示器厚度 //indicatorPadding //indicatorSize 設置指示器大小計算方式 ///指示器大小計算方式,TabBarIndicatorSize.label跟文字等寬,TabBarIndicatorSize.tab跟每個tab等寬 indicatorSize: TabBarIndicatorSize.tab, //生成Tab菜單 controller: tabController, //構造Tab集合 tabs: tabs.map((e) => Tab(text: e)).toList()); return tabBar; } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Flutter Sliver滾動組件的演示代碼
- Flutter ScrollController滾動監聽及控制示例詳解
- Flutter listview如何實現下拉刷新上拉加載更多功能
- Flutter折疊控件使用方法詳解
- Flutter頁面傳值的幾種方式