当前位置: 首页 > news >正文

Flutter系列(五)底部导航详解

Flutter系列(四)底部导航+顶部导航+图文列表完整代码,如下:

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

目录

一、前言

二、Scaffold组件

三、BottomNavigationBar组件

四、底部导航的具体实现步骤

步骤1. 构建底部导航组件,设置样式

步骤2. 设置底部导航图标和文字

步骤3. 导航页内容

步骤4. 使用底部导航

五、完整代码和工程结构


一、前言

        本文主要介绍底部导航 BottomNavigationBar 的实现,和Scaffold组件一些常用的属性

二、Scaffold组件

        在程序中查看组件属性可以点击组件Scaffold查看源码,常用属性的中文释义如下表:

属性释义类型
appBar顶部导航PreferredSizeWidget
body底部导航的页面内容Widget(组件)
bottomNavigationBar底部导航BottomNavigationBar
drawer左侧抽屉菜单Widget
backgroundColor背景色Color

         实现底部导航需要用到 bottomNavigationBar 和 body 两个属性

三、BottomNavigationBar组件

         BottomNavigationBar是flutter官方提供的组件,常用属性的中文释义如下表:

属性释义类型
items图文列表项List<BottomNavigationBarItem>
currentIndex当前页索引int
onTap点击切换页面ValueChanged<int>
fixedColor图标选中时颜色Color
type图文样式类型BottomNavigationBarType
iconSize图标尺寸double
selectedFontSize选中时文字尺寸double
unselectedFontSize未选中时文字尺寸double

         BottomNavigationBarItem 是flutter官方提供的组件,常用属性的中文释义如下表:

属性释义类型
icon图标Icon
label文字String

         Icon 是flutter官方提供的组件,提供了很多常用的图标,图标对应的名称有官方文档,而且支持检索,非常方便,链接如下:Flutter Icon 图标网

四、底部导航的具体实现步骤

步骤1. 构建底部导航组件,设置样式

int _bottomNavigationIndex = 0;  //底部导航页的索引,从第一页开始(比如首页)//底部导航-样式BottomNavigationBar _bottomNavigationBar(){return BottomNavigationBar(items: items(), //底部导航-图文列表currentIndex: _currentIndex, //底部导航页的当前索引onTap: (flag) {setState(() {_currentIndex = flag;  //点击响应,切换到选中图标});}, //onTap 点击切换页面fixedColor: Colors.blue,  //图标选中时的颜色:蓝色type: BottomNavigationBarType.fixed, //设置fixed,当图标数超过3个时不会改变样式iconSize: 20,  //图标大小selectedFontSize: 12.0, //选中时字体大小unselectedFontSize: 12.0,  //未选中时字体大小);}

步骤2. 设置底部导航图标和文字

       底部导航的图标和文字内容相对固定,不经常变更,避免代码嵌套太多,可以移出来封装到一个dart文件里,使代码简洁易读,这里封装到自定义的 bottomNavigationBar.dart 文件

//底部导航-图标和文字定义
List<BottomNavigationBarItem> items(){return [const BottomNavigationBarItem(icon: Icon(Icons.home),label: '首页',),const BottomNavigationBarItem(icon: Icon(Icons.find_in_page),label: '发现',),const BottomNavigationBarItem(icon: Icon(Icons.shop),label: '商城',),const BottomNavigationBarItem(icon: Icon(Icons.local_activity),label: '我的',),];
}

步骤3. 导航页内容

         导航页的内容是app展示信息的核心,布局更为丰富,先封装成函数,具体布局后续再扩展

//底部导航页-切换页面
final pages = [IndexPage(), //首页FindPage(), //发现页ShopPage(), //商城页HomePage()  //个人主页
];

步骤4. 使用底部导航

@overrideWidget build(BuildContext context) {return Scaffold(body: pages[_bottomNavigationIndex], //页面切换bottomNavigationBar: _bottomNavigationBar()  //底部导航);}

五、完整代码和工程结构

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

END...

http://www.lryc.cn/news/56195.html

相关文章:

  • 『pyqt5 从0基础开始项目实战』02. 页面布局设计(保姆级图文)
  • 【Python机器学习】——平均中位数模式
  • Windows窗口
  • Spring Transaction 源码解读
  • [Netty] Channel和ChannelFuture和ChannelFutureListener (六)
  • 条件渲染
  • springboot(10)异步任务
  • 清华大学开源的chatGLM-6B部署实战
  • 通过矩阵从整体角度搞懂快速傅里叶变换原理
  • 【C++从0到1】25、C++中嵌套使用循环
  • FastDFS与Nginx结合搭建文件服务器,并内网穿透实现公网访问
  • 密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021
  • Matlab与ROS(1/2)---服务端和客户端数据通信(五)
  • 数字化转型的避坑指南:细说数字化转型十二大坑
  • pt05Encapsulationinherit
  • 面向对象编程(基础)9:封装性(encapsulation)
  • fate-serving-server增加取数逻辑并源码编译
  • 循环队列、双端队列 C和C++
  • 正则表达式(语法+例子)
  • Properties和IO流集合的方法
  • python 生成器、迭代器、动态新增属性及方法
  • Java处理JSON
  • 58-Map和Set练习-LeetCode692前k个高频单词
  • 线程生命周期及五种状态
  • OBCP第八章 OB运维、监控与异常处理-灾难恢复
  • 亚马逊云科技Serverless Data:数字经济下的创新动能
  • 【Ruby学习笔记】15.Ruby 异常
  • 聊聊MySQL主从延迟
  • 【C++从0到1】19、C++中多条件的if语句
  • 【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)