> 文章列表 > Flutter系列(六)顶部导航详解

Flutter系列(六)顶部导航详解

Flutter系列(六)顶部导航详解

完整工程:

Flutter系列(四)底部导航+顶部导航+图文列表完整代码_摸金青年v的博客-CSDN博客

详细解读:

Flutter系列(五)底部导航详解_摸金青年v的博客-CSDN博客

一、前言

            本文介绍顶部导航 的实现,使用到的组件DefaultTabController、Scaffold、PreferredSize、TabBar、TabBarView

二、组件介绍

1. DefaultTabController组件

属性 含义 类型
length 顶部导航的个数 int
child 子组件 Widget

2. Scaffold组件

     Scaffold在上一章介绍过: Flutter系列(五)底部导航详解_摸金青年v的博客-CSDN博客

     这里使用到它的 appBar属性,appBar的类型是PreferredSizeWidget,想要调整导航栏距离屏幕顶端的高度需要用到PreferredSize

3. PreferredSize组件

        这里使用PreferredSize的目的是:方便后面的自定义搜索框的嵌入,可以控制顶部导航栏距离屏幕顶部的行距,避免被搜索框遮挡。

属性 含义 类型
preferredSize 导航栏距离屏幕顶端的高度 Size
child 子控件 Widget

4. TabBar组件和Tab组件

属性 含义 类型
labelColor 选中时文字颜色 Color
unselectedLabelColor 未选中时文字颜色 Color
tabs 标签内容 List<Tab>

          这里标签内容使用Tab组件

5. TabBarView组件

                   顶部导航的页面,每个页面先封装函数,便于后续扩展

三、顶部导航完整代码

@overrideWidget build(BuildContext context) {return DefaultTabController(length: 3,child: Scaffold(backgroundColor: Colors.white, //顶部导航背景色appBar: const PreferredSize(preferredSize: Size.fromHeight(26), //距离屏幕顶端的高度child: TabBar(labelColor: Colors.blue,  //选中时颜色unselectedLabelColor: Colors.black26, //未选中时颜色tabs: [Tab(text: '推荐'),Tab(text: '资讯'),Tab(text: '科技'),],),),body: TabBarView(children: [RecommendPage(),const Icon(Icons.directions_transit),const Icon(Icons.directions_bike),],),),);}

展示样式和完整工程:

Flutter系列(四)底部导航+顶部导航+图文列表完整代码_摸金青年v的博客-CSDN博客

END...