Flutter仿闲鱼底部导航栏实现
概述
本文主要实现一个仿闲鱼底部导航栏实现,这种效果在项目中经常用到,接下来我们就从头开始实现。
仿闲鱼底部导航栏
要实现闲鱼底部导航栏的效果我们需要使用到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仿闲鱼底部导航栏实现相关推荐
- android底部导航栏中间凸起,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标...
仿闲鱼底部导航栏带有中间凸起图标 刚接触Flutter,需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图: 好的,下面开始上代码了: 一. 在main.dart文件中,定义APP的入口信 ...
- 闲鱼底部tab android,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标
image 霸图镇楼 仿闲鱼底部导航栏带有中间凸起图标 需求情景: 需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图 image 好的,下面开始上代码了: 一. 在main.dart文件 ...
- 【Flutter】StatefulWidget 组件 ( 底部导航栏组件 | BottomNavigationBar 组件 | BottomNavigationBarItem 组件 | 选项卡切换 )
文章目录 一.BottomNavigationBar 组件 二.BottomNavigationBarItem 组件 三.BottomNavigationBar 底部导航栏代码示例 四.BottomN ...
- Flutter学习日记之底部导航栏BottomNavigationBar组件的使用
本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...
- 仿闲鱼 底部菜单html,GitHub - 494293346/rotateMenu: 仿闲鱼首页,“底部加号弹出菜单选项” 界面,动画效果可能跟闲鱼有点不一样...
rotateMenu 仿闲鱼首页,"底部加号弹出菜单选项" 界面,动画效果可能跟闲鱼有点不一样 ##简介 仿闲鱼首页,"底部加号弹出菜单选项" 界面,动画效果可 ...
- flutter BottomAppBar 实现不规则底部导航栏
更多文章请查看 lutter从入门 到精通 实现底部导航栏并点击切换页面可简述为有三种方式 TabBar + TabBarView BottomNavigationBar + BottomNaviga ...
- 仿喜马拉雅app底部导航栏五个按钮-clipChildren属性
clipChildren属性 clipChildren属性表示是否限制子控件在该容器所在的范围内,clipChildren属性配合layout_gravity属性,可以用来设置多余部分的显示位置,我这 ...
- 仿闲鱼 底部菜单html,最快、最简单的实现底部标签导航(仿闲鱼)
[实例简介] 效果图及详情http://blog.csdn.net/chinese_zhang/article/details/50991573 [实例截图] [核心代码] LLRiseTabBar- ...
- 仿新版QQ底部导航栏动态拖动按钮
首先要感谢这位大哥的分享:http://www.jianshu.com/p/fcbd86d2b73a. 新版QQ的底部按钮能拖动,跟随手势的位置做不同动画效果,很是有趣. 其实这种动画实现原理很简单, ...
最新文章
- else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else
- Java中比较两个Double类型数据的大小
- Linux引到过程与服务控制
- [算法 笔记]字符串表达式计算(简易版)
- Java——遍历List过程中添加和删除元素的问题(亲测第二种)
- java面试题32:Java网络程序设计中,下列正确的描述是()
- Delphi:第一个hello world程序
- 小白跟学系列之手把手搭建NLP经典模型-2(含代码)
- 触发器中的 Inserted表和Deleted表
- 在html标签中写css样式,html style样式标签元素教程
- 11、盛最多水的容器(python)
- unity实现打飞碟游戏
- SSRS 2012 高级图表类型 -- 圆饼图
- 淘宝/天猫买家信息 API 返回值说明
- 灰度持续加仓,FIL即将大涨
- 【存储】HDS VSP
- 【LInux入门手册】目录结构 常用指令与操作 vim与tmux
- PTC过流保护器件工作原理及选型方法
- md文档html显示+toc,使用md-toc.js来生成文章目录
- eplan支持mysql_EPLAN软件平台系统和电脑要求