Flutter的TabBar选项卡一般位于AppBar下方,通常和TabBarView、TabController一起使用:
TabBar:Tab页的选项组件,默认为水平排列:
属性名
|
类型
|
说明
|
isScrollable
|
bool
|
是否可以水平移动
|
tabs
|
List<Widget>
|
Tab选项列表
|
Tab组件常常放在TabBar的tabs里来使用,定义单个tab的文字、图标等内容:
属性名
|
类型
|
说明
|
icon
|
Widget
|
Tab图标
|
text
|
String
|
Tab文本
|
TabBarView:Tab页的内容容器,Tab页内容一般处理为随选项卡的改变而改变。
属性名
|
类型
|
说明
|
controller
|
TabController
|
指定视图的控制器
|
children
|
List<Widget>
|
视图组件的child为一个列表,一个选项卡对应一个视图
|
TabController:TabBar和TabBarView的控制器,它是关联这两个组件的桥梁。
DefaultTabController:和TabController作用一致,也是关联TabBar和TabBarView的,但是它是无状态的组件,TabController是有状态的。
下面是DefalutTabController、TabBar、TabBarView案例:
01 | import 'package:flutter/material.dart' ; |
03 | void main() => runApp(MyApp()); |
05 | class MyApp extends StatelessWidget{ |
06 | final List<Tab> _myTabs = <Tab>[ |
07 | Tab(text: '选项一' ,icon: Icon(Icons.add_shopping_cart),), |
08 | Tab(text: '选项二' ,icon: Icon(Icons.wifi_tethering),), |
09 | Tab(text: '选项三' ,icon: Icon(Icons.airline_seat_flat_angled),) |
12 | Widget build(BuildContext context) { |
13 | return new MaterialApp( |
14 | debugShowCheckedModeBanner: false , |
17 | body: DefaultTabController( |
18 | length: _myTabs.length, |
22 | title: new Text( 'TabBar Demo' ), |
23 | leading: Icon(Icons.menu), |
29 | indicatorColor: Colors.black, |
31 | indicatorSize: TabBarIndicatorSize.label, |
32 | labelColor: Colors.limeAccent, |
33 | unselectedLabelColor: Colors.deepOrange, |
37 | children: _myTabs.map((Tab tab){ |
40 | mainAxisSize: MainAxisSize.min, |