最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flutter實現(xiàn)appbar下選項卡切換

 更新時間:2021年07月11日 11:45:59   作者:早起的年輕人  
這篇文章主要為大家詳細介紹了flutter實現(xiàn)appbar下選項卡切換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了flutter實現(xiàn)appbar下選項卡切換的具體代碼,供大家參考,具體內容如下

TabBar 、Tab、TabBarView 結合實現(xiàn)

這里實現(xiàn)的是appbar下的選項卡

import 'package:flutter/material.dart';

/**
 * 有狀態(tài)StatefulWidget
 *  繼承于 StatefulWidget,通過 State 的 build 方法去構建控件
 */
class TabBarAndTopTab extends StatefulWidget {
  通過構造方法傳值
  TabBarAndTopTab();

  //主要是負責創(chuàng)建state
  @override
  _DemoStateWidgetState createState() => _DemoStateWidgetState();
}

/**
 * 在 State 中,可以動態(tài)改變數據
 * 在 setState 之后,改變的數據會觸發(fā) Widget 重新構建刷新
 */
class _DemoStateWidgetState extends State<TabBarAndTopTab>
    with SingleTickerProviderStateMixin {
  _DemoStateWidgetState();

  List tabs = ["首頁", "發(fā)現(xiàn)", "我的", "設置"];

  //用于控制/監(jiān)聽Tab菜單切換
  //TabBar和TabBarView正是通過同一個controller來實現(xiàn)菜單切換和滑動狀態(tài)同步的。
  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按鈕組,將要實現(xiàn)的效果如下:
  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,
      //創(chuàng)建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;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

吴桥县| 囊谦县| 海原县| 尼玛县| 綦江县| 华阴市| 吉水县| 商水县| 上栗县| 阿拉善左旗| 城步| 平顶山市| 教育| 鄢陵县| 介休市| 旺苍县| 武威市| 青神县| 兴隆县| 南木林县| 来宾市| 桐庐县| 和顺县| 凤台县| 科技| 博兴县| 广平县| 修武县| 丰台区| 郴州市| 德江县| 桦南县| 商水县| 保康县| 中卫市| 探索| 四平市| 普宁市| 中西区| 鞍山市| 四子王旗|