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,可以自定义child
  • padding,//每个tab的内边距
  • width,//宽度
  • height,//高度
  • color,//背景颜色
  • iconPadding,// 图标 padding
  • badge, //未读消息的widget
  • badgeNo,//未读消息的数量
  • 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导航-顶部导航-底部导航相关推荐

  1. React Native(四)——顶部以及底部导航栏实现方式

    效果图: 一步一步慢慢来: 其实刚入手做app的时候,就应该做出简单的顶部以及底部导航栏.无奈又在忙其他事情,导致这些现在才整理出来. 1.顶部导航栏:react-native-scrollable- ...

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

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

  3. React Native 的顶部导航栏和底部导航栏目

    说来也是惭愧,本来关于底部导航栏,我已经写过一篇博客,只不过那篇更偏向于入门一些,当时一实现功能之后就迫不及待的分享给大家了.地址在这儿:http://blog.csdn.net/LJFPHP/art ...

  4. (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏

    目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...

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

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

  6. html固定顶部导航栏和底部导航栏

    固定顶部导航栏,在样式(css)中加入以下代码 position: fixed;z-index: 1000;right: 0;bottom: 0;left: 0px;top: 0px;width: 1 ...

  7. Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...

    前言 大家好,我是 Vic,今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢 学习目标 AndroidStudio制作底部导航栏以及用Fra ...

  8. flutter 带未读消息的底部导航

    目录 **[flutter_bottom_tab_bar](https://github.com/LiuC520/flutter_bottom_tab_bar)** items : ```List`` ...

  9. android viewpager button 导航,ViewPager做底部导航

    做了一个项目,需要使用底部导航功能,仿微信效果,可以左右滑动切换页面.好处就是比较适合用户手势操作,操作效果比较好:缺点是viewpager控件需要提前加载下一个页面,最少提前加载一个页面,为了保证左 ...

最新文章

  1. 十亿红包还不够,揭秘快手春节四大技术玩法:AI/AR/MR都被装进App,为了这个春晚真拼了...
  2. Python 【企鹅号、QQ看点】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、视频号等平台的视频自动化同步发布
  3. centOS安装java
  4. php 获取域名_在PHP中截取当前页面URL地址及URL信息的方法
  5. prim算法 + 最小生成树的打印 C语言
  6. IOS:UI设计之UISegmentedControl相关基础
  7. Python微信库:itchat的用法详解
  8. VS2015调试无法加载PDB 文件
  9. 基于单目视觉的平面目标定位和坐标测量 (上) - 坐标系和成像模型
  10. C002-CPP-语法与用法摘录-(ques=0)
  11. visio至word图片失真
  12. linux中文成方块,给linux添加字体
  13. 计算机中数据的格式化,分享一个电脑格式化数据恢复方法-数据恢复百科
  14. 简单使用python进行图像打标
  15. ADS(Advanced Design system)良率分析(Yield)、良率优化(YieldOptim)
  16. 浅谈5G网络及其应用
  17. 小程序 配置域名 业务域名_使域名成为您的业务
  18. Codeforces 676D Theseus and labyrinth 模拟+bfs
  19. C++程序设计语言导论
  20. 让企业用上金融合规专有云,腾讯云专有云TCE矩阵来支招儿!

热门文章

  1. 疯狂ios讲义疯狂连载之显示动画
  2. F#中的异步和并行设计模式(三):代理
  3. [笔记].如何使用Nios II的中断:PIO中断与定时器中断
  4. sql server 游标的使用
  5. 吸引:由《你的知识需要管理》编辑过程想到的
  6. 【记录一个问题】cuda核函数可能存在栈溢出,导致main()函数退出后程序卡死30秒CUDA...
  7. ISE14.7安装教程(转)
  8. 火狐访问HTTPS网站显示连接不安全的解决方法
  9. c++面向对象的编程
  10. 比特币(包括BTC和BCH)的零确认到底安不安全?