概述

本文主要实现一个仿闲鱼底部导航栏实现,这种效果在项目中经常用到,接下来我们就从头开始实现。

仿闲鱼底部导航栏

要实现闲鱼底部导航栏的效果我们需要使用到BottomNavigationBar和FloatingActionButton,前面我们说过FloatingActionButton
这个组件,接下来我们先说一下BottomNavigationBar这个组件。

BottomNavigationBar

BottomNavigationBar是属于Scaffold中的一个位于页面底部的组件。通常和BottomNavigationBarItem配合使用。
其中BottomNavigationBarItem是BottomNavigationBar的子选项。

BottomNavigationBar构造方法及常用属性简介
BottomNavigationBar({Key key,@required this.items,this.onTap,this.currentIndex = 0,BottomNavigationBarType type,this.iconSize = 24.0,Color selectedItemColor,this.unselectedItemColor,});
属性名 属性值类型 说明
items BottomNavigationBarItem类型的集合 底部导航栏的子显示项
onTap ValueChanged 点击底部导航栏子显示项的回调,返回的int值为选中子项的下标
currentIndex int 当前显示项的下标
type BottomNavigationBarType 包含fixed和shifting类型,显示效果不同
iconSize double 子项图标的大小
BottomNavigationBarItem构造方法及常用属性简介

该组件配合BottomNavigationBar使用,用作底部导航栏要显示的子项,由图标和文字组成。

const BottomNavigationBarItem({@required this.icon,this.title,Widget activeIcon,this.backgroundColor,});
属性名 属性值类型 说明
icon Widget 需要显示的图标组件,多为Icon
title Widget 需要显示的文字组件,多为Text
activeIcon Widget 选中时显示的icon,多为Icon
backgroundColor Color BottomNavigationBarType为shifting时的背景颜色

接下来我们开始实现仿闲鱼底部导航栏的效果,一般来讲,点击底部导航栏都会进行页面切换或者更新数据,需要动态的改变一些
页面状态,所以我们需要继承StatefulWidget。

class BottomNavigationPage extends StatefulWidget {@overrideState<StatefulWidget> createState() {return _BottomNavigationPageState();}
}

接下来,我们需要准备导航栏要显示的子项和点击每个子项对应的界面。

// 切换底部导航栏需要跳转的页面
final pages = <Widget>[HomePage(),SecondPage(),ThirdPage(),FourPage(),FivePage()
];// 底部导航栏要显示的所有子项
final List<BottomNavigationBarItem> bottomNavBarItems = [BottomNavigationBarItem(icon: Icon(Icons.home),title: Text("闲鱼")),BottomNavigationBarItem(icon: Icon(Icons.blur_circular),title: Text("鱼塘")),BottomNavigationBarItem(icon: Icon(Icons.add),title: Text("卖闲置")),BottomNavigationBarItem(icon: Icon(Icons.message),title: Text("消息")),BottomNavigationBarItem(icon: Icon(Icons.person),title: Text("我的")),
];

为了方便显示,在每个界面在页面中间都只显示一个text文本。这些都准备完成之后,直接在BottomNavigationPage页面的
Scaffold中使用bottomNavigationBar,然后指定items,type等属性即可。

Scaffold(appBar: AppBar(title: Text("底部导航栏页面"),),body: pages[this._currentIndex],bottomNavigationBar: BottomNavigationBar(items: bottomNavBarItems,onTap: _changePage,currentIndex: this._currentIndex,type: BottomNavigationBarType.fixed, ),

至此,基本的底部导航栏功能已经实现,但是,此处有一个必须注意的点,BottomNavigationBar如果子项超过4个,不指定type类型
的话,默认为BottomNavigationBarType.shifting类型,不超过4个为BottomNavigationBarType.fixed类型,超过了4个,如果
不指定type: BottomNavigationBarType.fixed的话,底部导航栏颜色会消失,此坑需要注意。

优化

细心的同学可能发现这和闲鱼也不像啊,没有中间的悬浮加号,接下来我们通过Scaffold中floatingActionButton属性进行实现。

Scaffold(appBar: AppBar(title: Text("底部导航栏页面"),),body: pages[this._currentIndex],bottomNavigationBar: BottomNavigationBar(items: bottomNavBarItems,onTap: _changePage,currentIndex: this._currentIndex,type: BottomNavigationBarType.fixed,),floatingActionButton: FloatingActionButton(child: Icon(Icons.add,size: 36,),onPressed: _pressAdd,backgroundColor: Colors.yellow,foregroundColor: Colors.black,),floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,);

上述floatingActionButtonLocation是为了指定FloatingActionButton按钮位置的,centerDocked值正好实现了我们
需要的效果,其他值大家可以自行尝试一下。
其中_changePage和_pressAdd方法都是为了更改当前下标值进行刷新界面的,都是通过setState方法进行刷新界面的。

完整的代码暂时没有上传仓库,如有需要可以后台留言,我会发给你。后期会上传仓库。

感谢大家的阅读,你的阅读是我前进的动力。

Flutter仿闲鱼底部导航栏实现相关推荐

  1. android底部导航栏中间凸起,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标...

    仿闲鱼底部导航栏带有中间凸起图标 刚接触Flutter,需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图: 好的,下面开始上代码了: 一. 在main.dart文件中,定义APP的入口信 ...

  2. 闲鱼底部tab android,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标

    image 霸图镇楼 仿闲鱼底部导航栏带有中间凸起图标 需求情景: 需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图 image 好的,下面开始上代码了: 一. 在main.dart文件 ...

  3. 【Flutter】StatefulWidget 组件 ( 底部导航栏组件 | BottomNavigationBar 组件 | BottomNavigationBarItem 组件 | 选项卡切换 )

    文章目录 一.BottomNavigationBar 组件 二.BottomNavigationBarItem 组件 三.BottomNavigationBar 底部导航栏代码示例 四.BottomN ...

  4. Flutter学习日记之底部导航栏BottomNavigationBar组件的使用

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...

  5. 仿闲鱼 底部菜单html,GitHub - 494293346/rotateMenu: 仿闲鱼首页,“底部加号弹出菜单选项” 界面,动画效果可能跟闲鱼有点不一样...

    rotateMenu 仿闲鱼首页,"底部加号弹出菜单选项" 界面,动画效果可能跟闲鱼有点不一样 ##简介 仿闲鱼首页,"底部加号弹出菜单选项" 界面,动画效果可 ...

  6. flutter BottomAppBar 实现不规则底部导航栏

    更多文章请查看 lutter从入门 到精通 实现底部导航栏并点击切换页面可简述为有三种方式 TabBar + TabBarView BottomNavigationBar + BottomNaviga ...

  7. 仿喜马拉雅app底部导航栏五个按钮-clipChildren属性

    clipChildren属性 clipChildren属性表示是否限制子控件在该容器所在的范围内,clipChildren属性配合layout_gravity属性,可以用来设置多余部分的显示位置,我这 ...

  8. 仿闲鱼 底部菜单html,最快、最简单的实现底部标签导航(仿闲鱼)

    [实例简介] 效果图及详情http://blog.csdn.net/chinese_zhang/article/details/50991573 [实例截图] [核心代码] LLRiseTabBar- ...

  9. 仿新版QQ底部导航栏动态拖动按钮

    首先要感谢这位大哥的分享:http://www.jianshu.com/p/fcbd86d2b73a. 新版QQ的底部按钮能拖动,跟随手势的位置做不同动画效果,很是有趣. 其实这种动画实现原理很简单, ...

最新文章

  1. else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else
  2. Java中比较两个Double类型数据的大小
  3. Linux引到过程与服务控制
  4. [算法 笔记]字符串表达式计算(简易版)
  5. Java——遍历List过程中添加和删除元素的问题(亲测第二种)
  6. java面试题32:Java网络程序设计中,下列正确的描述是()
  7. Delphi:第一个hello world程序
  8. 小白跟学系列之手把手搭建NLP经典模型-2(含代码)
  9. 触发器中的 Inserted表和Deleted表
  10. 在html标签中写css样式,html style样式标签元素教程
  11. 11、盛最多水的容器(python)
  12. unity实现打飞碟游戏
  13. SSRS 2012 高级图表类型 -- 圆饼图
  14. 淘宝/天猫买家信息 API 返回值说明
  15. 灰度持续加仓,FIL即将大涨
  16. 【存储】HDS VSP
  17. 【LInux入门手册】目录结构 常用指令与操作 vim与tmux
  18. PTC过流保护器件工作原理及选型方法
  19. md文档html显示+toc,使用md-toc.js来生成文章目录
  20. eplan支持mysql_EPLAN软件平台系统和电脑要求

热门文章

  1. 面试官问:MySQL锁与事物隔离级别你知道吗?
  2. 我们提倡适量饮酒,但多少算是适量呢?
  3. 武汉大学计算机学院周维,周维勋
  4. 图书管理系统(归还书籍)
  5. 「第二部:容器和微服务架构」(2) 容器化单体应用
  6. 云服务器本质是虚拟机,云服务器本质是虚拟机
  7. php基础-GD库-批量制作水印图片
  8. 3D学到什么程度能月入过万?
  9. 面剔除 Face culling
  10. 运筹说 第92期|爱思唯尔“高被引学者“