顶部导航TabBar、TabBarView、DefaultTabController
原文地址:https://www.cnblogs.com/upwgh/p/11369537.html
TabBar:Tab页的选项组件,默认为水平排列。
TabBarView:Tab页的内容容器,Tab页内容一般处理为随选项卡的改变而改变。
TabController:TabBar和TabBarView的控制器,它是关联这两个组件的桥梁。
属性名 | 类型 | 说明 |
isScrollable | bool | 是否可以水平移动 |
tabs | List<Widget> | Tab选项列表 |
属性名 | 类型 | 说明 |
icon | Widget | Tab图标 |
text | String | Tab文本 |
属性名 | 类型 | 说明 |
controller | TabController | 指定视图的控制器 |
children | List<Widget> | 视图组件的child为一个列表,一个选项卡对应一个视图 |
上面我们说的TabController,与其并列的还有DefaultTabController,两者的区别是TabController一般放在有状态组件中使用,而DefaultTabController一般放在无状态组件中使用。
下面通过DefalutTabController来关联TabBar和TabBarView来实现一个Demo:
按 Ctrl+C 复制代码 按 Ctrl+C 复制代码
效果截图:
接下来分别看一下DefaultTabController、TabBar、TabBarView的构造函数有什么:
- DefaultTabController
const DefaultTabController({
Key key,
@required this.length,
this.initialIndex = 0,
@required this.child,
}) : assert(initialIndex != null),
super(key: key);
- TabBar
const TabBar({
Key key,
@required this.tabs,//显示的标签内容,一般使用Tab对象,也可以是其他Widget
this.controller,//TabController对象
this.isScrollable = false,//是否可以滚动
this.indicatorColor,//指示器颜色
this.indicatorWeight = 2.0,//指示器的高度
this.indicatorPadding = EdgeInsets.zero,//指示器底部的padding
this.indicator,//指示器decoration,例如边框等
this.indicatorSize,//指示器大小的计算方式,TabBarIndicatorSize.tab:跟每个tab等宽,TabBarIndicatorSize.label:跟文字等宽
this.labelColor,//选中label的颜色
this.labelStyle,//选中label的样式
this.labelPadding,每个label的padding
this.unselectedLabelColor,//未选中label的颜色
this.unselectedLabelStyle,//未选中label的样式
}) : assert(tabs != null),
assert(isScrollable != null),
assert(indicator != null || (indicatorWeight != null && indicatorWeight > 0.0)),
assert(indicator != null || (indicatorPadding != null)),
super(key: key);
- TabBarView
const TabBarView({
Key key,
@required this.children,//Tab页内容组件的数组集合
this.controller,//TabController对象
this.physics,
}) : assert(children != null), super(key: key);
总结一下使用吧:一般流程就是初始化tabs的List列表,先把选项卡的选项初始化出来,接下来就是DefaultTabController把TabBar和TabBarView关联起来,最后就是给TabBar和TabBarView设置各种属性来满足需求。
顶部导航TabBar、TabBarView、DefaultTabController的更多相关文章
- Flutter学习笔记(17)--顶部导航TabBar、TabBarView、DefaultTabController
如需转载,请注明出处:Flutter学习笔记(17)--顶部导航TabBar.TabBarView.DefaultTabController 上一篇我们说了BottmNavigationBar底部导航 ...
- 天书笔记:HTML+CSS实现顶部导航栏
此笔记纯属本人脑残笔记,阅读困难不理解属正常现象,初学者尽量不要阅读,否则轻则口吐白沫重则走火入魔,切记切记 先晒效果图: 效果要求类似于b站的顶部导航(..原谅我老是拿b站做例子:) ) 然后是代码 ...
- android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏
概述 在很app上都见过 可折叠的顶部导航栏效果.google support v7 提供了 CollapsingToolbarLayout 可以实现这个效果.效果图如下: 实现步骤 1. 写 ...
- 更改SharePoint 2010 顶部导航为下拉菜单样式
更改SharePoint 2010 顶部导航为下拉菜单样式 最后的效果图: 假如一个网站集顶级站点下面有子网站:sub site1,该子站点下面又有两个子站点:sub site1_1,sub si ...
- yii2顶部导航使用
yii2中使用顶部导航的具体方法: 1.视图中调用两个类: use yii\bootstrap\Nav;use yii\bootstrap\NavBar; 2. <?php ...
- jQuery 顶部导航尾随滚动,固定浮动在顶部
jQuery 顶部导航尾随滚动.固定浮动在顶部 演示 XML/HTML Code <section> <article class="left"> < ...
- [置顶]
xamarin Tablayout+Viewpager+Fragment顶部导航栏
最近几天不忙,所以把项目中的顶部导航栏的实现归集一下.android中使用TabLayout+ViewPager+Fragment制作顶部导航非常常见,代码实现也比较简单.当然我这个导航栏是基于xam ...
- bootstrap顶部导航遮挡下面内容的解决办法
使用bootstrap设置顶部导航,并将导航栏固定,代码如下: <nav class="navbar navbar-expand-lg navbar-light bg-light fi ...
- react native (2) 嵌入h5页面 设置顶部导航
嵌入h5页面 1.新建好页面 2. import { WebView } from 'react-native'; 3.<WebView source={{ uri: '要引入的页面路径' }} ...
随机推荐
- cmdb资产管理2
新增资产 现在api服务端已经能获取到我们要做的操作了.接下来应该是补充获取操作后对应的程序编写 我们要做的是把post请求发过来的数据保存到数据库.我们创建repository 名字的app,并设计 ...
- Relief 过滤式特征选择
给定训练集{(x1,y1),(x2,y2).....(xm,ym)} ,对每个示例xi,Relief在xi的同类样本中寻找其最近邻xi,nh(猜中近邻),再从xi的异类样本中寻找其最近邻xi,nm(猜 ...
- java调用c++库
c++ 写的库 jni封装一层 才可以给 java调用
- 【POJ3714】Raid:平面最近点对
Description After successive failures in the battles against the Union, the Empire retreated to its ...
- dbms_lob包学习笔记之三:instr和substr存储过程
instr和substr存储过程,分析内部大对象的内容 instr函数与substr函数 instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串. 用于查找内部大对象中的字符串的 ...
- Maven和Ajax
****************使用maven构建项目******************** 一个maven项目必须要有一个pom文件. maven中常用的命令: 在使用mvn archetype: ...
- 开箱一个docker
1.docker 的出现? 1.1.环境切换配置麻烦 通常我们在开发环境写好代码,打个war/jar包,扔到tomcat下,就算是跑起来了:但是扔到生产环境就挂了,what?各种错误... 1.2.应 ...
- Ubuntu下设置 nginx php-fpm 自动启动 rc.local
编辑 root@ubuntu:/usr/sbin# vim /etc/init.d/rc.local /usr/sbin/php-fpm /usr/sbin/nginx 保存!
- 时间datetime模块
datetime模块 import datetime --时间加减的模块 #返回当前时间 print(datetime.datetime.now()) --2019-09-28 17:22:14.54 ...
- Cocos Creator 功能介绍
cc.Class({ extends: cc.Component, properties: { anim: cc.Animation }, playRun: function() { this.ani ...