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. 使用底部导航

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

五、完整代码和工程结构

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

END...

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值