flutter 自定义tab导航-顶部导航-底部导航
flutter_custom_bottom_tab_bar
和另外一个bottom_tab_bar的区别:github.com/LiuC520/flu… bottom_tab_bar是通过改变state来控制每一个tab的点击的点击事件,然后改变上面的显示内容,这样的方法比较慢比较卡,并不能满足我们的日常使用
本文的具体的用法参考了,顶部tab的切换来做的,比较快
自定义底部导航tab
官方的tab导航,tabbar无法改变宽高,因此无法自定义
TabContainer
* 自定义的TabBar* 这里是自定义的,实现了PreferredSizeWidget,因为在AppBar的bottom属性里,只支持PreferredSizeWidget这样的widget
同时是此控件还能设置padding复制代码
alignment
, //对齐方式padding
,//内边距Color color
,// 背景颜色Decoration decoration
,//在child背后显示的装饰样式foregroundDecoration
,//在child之前显示的装饰样式width
,//宽度height
,// 高度BoxConstraints constraints
, //约束margin
,//外边距transform
,//矩阵转换,可以是用缩放,平移、旋转child
,//子view
EachTab
TabBar 的tab就是 和 Tab 一样用途:可以用在顶部导航,也可以用在底部tab导航
复制代码
text
, //tab的文字textStyle
,//tab文字的样式icon,
// 图标child
,// 可以用不用text和child,可以自定义childpadding
,//每个tab的内边距width
,//宽度height
,//高度color
,//背景颜色iconPadding
,// 图标 paddingbadge
, //未读消息的widgetbadgeNo
,//未读消息的数量badgeColor
//未读消息的背景颜色
Example
在pubspec.yaml中引入包
flutter_custom_bottom_tab_bar:git: https://github.com/LiuC520/flutter_custom_bottom_tab_bar.git
复制代码
在要使用的文件中导入文件import 'package:flutter_custom_bottom_tab_bar/tabbar.dart';
import 'package:flutter_custom_bottom_tab_bar/eachtab.dart';
复制代码
class Entry extends StatefulWidget {@overrideState<StatefulWidget> createState() {return EntryState();}
}class EntryState extends State<Entry> with SingleTickerProviderStateMixin {TabController _tabController;int _selectedIndex = 0;var titles = ['首页', '西瓜视频', '找人', '小视频', '我的'];var icons = [Icons.home,Icons.play_arrow,Icons.child_friendly,Icons.fiber_new,Icons.mic_none];@overridevoid initState() {super.initState();_tabController =new TabController(vsync: this, initialIndex: 0, length: titles.length);_tabController.addListener(() {setState(() => _selectedIndex = _tabController.index);print("liucheng-> ${_tabController.indexIsChanging}");});}@overrideWidget build(BuildContext context) {return Scaffold(bottomNavigationBar: Container(height: 46,child: Column(children: <Widget>[Divider(height: 2,),new TabBar(isScrollable: false,controller: _tabController,indicatorColor: Colors.transparent,labelColor: Colors.red,labelPadding: EdgeInsets.all(0),unselectedLabelColor: Colors.black,tabs: <Widget>[EachTab(width: 70,badgeNo: '12',badgeColor: Colors.red,height: 40,padding: EdgeInsets.all(0),icon: _selectedIndex == 0? Image.asset('assets/imgs/tab_home_selected.png',width: 20,height: 20,): Image.asset('assets/imgs/tab_home.png',width: 20,height: 20,),text: titles[0],iconPadding: EdgeInsets.fromLTRB(0, 0, 0, 2),textStyle: TextStyle(fontSize: 10)),EachTab(height: 40,padding: EdgeInsets.all(0),icon: _selectedIndex == 1? Image.asset('assets/imgs/tab_xigua_selected.png',width: 20,height: 20,): Image.asset('assets/imgs/tab_xigua.png',width: 20,height: 20,),text: titles[1],iconPadding: EdgeInsets.fromLTRB(0, 0, 0, 2),textStyle: TextStyle(fontSize: 10)),EachTab(height: 40,padding: EdgeInsets.all(0),icon: _selectedIndex == 2? Image.asset('assets/imgs/tab_find_selected.png',width: 20,height: 20,): Image.asset('assets/imgs/tab_find.png',width: 20,height: 20,),text: titles[2],iconPadding: EdgeInsets.fromLTRB(0, 0, 0, 2),textStyle: TextStyle(fontSize: 10)),EachTab(height: 40,padding: EdgeInsets.all(0),icon: _selectedIndex == 3? Image.asset('assets/imgs/tab_video_selected.png',width: 20,height: 20,): Image.asset('assets/imgs/tab_video.png',width: 20,height: 20,),text: titles[3],iconPadding: EdgeInsets.fromLTRB(0, 0, 0, 2),textStyle: TextStyle(fontSize: 10)),EachTab(height: 40,padding: EdgeInsets.all(0),icon: _selectedIndex == 4? Image.asset('assets/imgs/tab_me_selected.png',width: 20,height: 20,): Image.asset('assets/imgs/tab_me.png',width: 20,height: 20,),text: titles[4],iconPadding: EdgeInsets.fromLTRB(0, 0, 0, 2),textStyle: TextStyle(fontSize: 10)),],),],),),body: TabBarView(physics: NeverScrollableScrollPhysics(), //设置滑动的效果,这个禁用滑动controller: _tabController,children: <Widget>[Home(),Text(titles[1]),Text(titles[2]),Text(titles[3]),Text(titles[4]),],),);}
}复制代码
flutter 自定义tab导航-顶部导航-底部导航相关推荐
- React Native(四)——顶部以及底部导航栏实现方式
效果图: 一步一步慢慢来: 其实刚入手做app的时候,就应该做出简单的顶部以及底部导航栏.无奈又在忙其他事情,导致这些现在才整理出来. 1.顶部导航栏:react-native-scrollable- ...
- 闲鱼底部tab android,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标
image 霸图镇楼 仿闲鱼底部导航栏带有中间凸起图标 需求情景: 需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图 image 好的,下面开始上代码了: 一. 在main.dart文件 ...
- React Native 的顶部导航栏和底部导航栏目
说来也是惭愧,本来关于底部导航栏,我已经写过一篇博客,只不过那篇更偏向于入门一些,当时一实现功能之后就迫不及待的分享给大家了.地址在这儿:http://blog.csdn.net/LJFPHP/art ...
- (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏
目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...
- android底部导航栏中间凸起,Flutter学习笔记--仿闲鱼底部导航栏带有中间凸起图标...
仿闲鱼底部导航栏带有中间凸起图标 刚接触Flutter,需要实现一个类似闲鱼APP的底部导航栏的实现 要实现的效果如图: 好的,下面开始上代码了: 一. 在main.dart文件中,定义APP的入口信 ...
- html固定顶部导航栏和底部导航栏
固定顶部导航栏,在样式(css)中加入以下代码 position: fixed;z-index: 1000;right: 0;bottom: 0;left: 0px;top: 0px;width: 1 ...
- Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...
前言 大家好,我是 Vic,今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢 学习目标 AndroidStudio制作底部导航栏以及用Fra ...
- flutter 带未读消息的底部导航
目录 **[flutter_bottom_tab_bar](https://github.com/LiuC520/flutter_bottom_tab_bar)** items : ```List`` ...
- android viewpager button 导航,ViewPager做底部导航
做了一个项目,需要使用底部导航功能,仿微信效果,可以左右滑动切换页面.好处就是比较适合用户手势操作,操作效果比较好:缺点是viewpager控件需要提前加载下一个页面,最少提前加载一个页面,为了保证左 ...
最新文章
- 十亿红包还不够,揭秘快手春节四大技术玩法:AI/AR/MR都被装进App,为了这个春晚真拼了...
- Python 【企鹅号、QQ看点】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、视频号等平台的视频自动化同步发布
- centOS安装java
- php 获取域名_在PHP中截取当前页面URL地址及URL信息的方法
- prim算法 + 最小生成树的打印 C语言
- IOS:UI设计之UISegmentedControl相关基础
- Python微信库:itchat的用法详解
- VS2015调试无法加载PDB 文件
- 基于单目视觉的平面目标定位和坐标测量 (上) - 坐标系和成像模型
- C002-CPP-语法与用法摘录-(ques=0)
- visio至word图片失真
- linux中文成方块,给linux添加字体
- 计算机中数据的格式化,分享一个电脑格式化数据恢复方法-数据恢复百科
- 简单使用python进行图像打标
- ADS(Advanced Design system)良率分析(Yield)、良率优化(YieldOptim)
- 浅谈5G网络及其应用
- 小程序 配置域名 业务域名_使域名成为您的业务
- Codeforces 676D Theseus and labyrinth 模拟+bfs
- C++程序设计语言导论
- 让企业用上金融合规专有云,腾讯云专有云TCE矩阵来支招儿!
热门文章
- 疯狂ios讲义疯狂连载之显示动画
- F#中的异步和并行设计模式(三):代理
- [笔记].如何使用Nios II的中断:PIO中断与定时器中断
- sql server 游标的使用
- 吸引:由《你的知识需要管理》编辑过程想到的
- 【记录一个问题】cuda核函数可能存在栈溢出,导致main()函数退出后程序卡死30秒CUDA...
- ISE14.7安装教程(转)
- 火狐访问HTTPS网站显示连接不安全的解决方法
- c++面向对象的编程
- 比特币(包括BTC和BCH)的零确认到底安不安全?