通常与TabBar联用,实现滑页的效果。一般不单独使用。

相关组件

TabBar

TabBarView需要与TabBar联用

【controller】 : 控制器 【TabController】
【children】 : 孩子们 【指示器颜色】
【physics】 : 表现 【ScrollPhysics】
162.gif

  1. import 'package:flutter/material.dart';
  2. class CustomTabBarView extends StatefulWidget {
  3. @override
  4. _CustomTabBarViewState createState() => _CustomTabBarViewState();
  5. }
  6. class _CustomTabBarViewState extends State<CustomTabBarView> with SingleTickerProviderStateMixin {
  7. final tabs = ['风画庭', '雨韵舍', '雷鸣殿', '电疾堂', '霜寒阁', '雪月楼'];
  8. TabController _tabController;
  9. @override
  10. void initState() {
  11. super.initState();
  12. _tabController = TabController(vsync: this, length: tabs.length);
  13. }
  14. @override
  15. void dispose() {
  16. _tabController.dispose();
  17. super.dispose();
  18. }
  19. @override
  20. Widget build(BuildContext context) {
  21. return Container(
  22. child: Column(
  23. children: <Widget>[
  24. _buildTabBar(),
  25. Container(
  26. color: Colors.purple,
  27. width: MediaQuery.of(context).size.width,
  28. height: 200,
  29. child: _buildTableBarView())
  30. ],
  31. ),
  32. );
  33. }
  34. Widget _buildTabBar() => TabBar(
  35. onTap: (tab) => print(tab),
  36. labelStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
  37. unselectedLabelStyle: TextStyle(fontSize: 16),
  38. isScrollable: true,
  39. controller: _tabController,
  40. labelColor: Colors.blue,
  41. indicatorWeight: 3,
  42. indicatorPadding: EdgeInsets.symmetric(horizontal: 10),
  43. unselectedLabelColor: Colors.grey,
  44. indicatorColor: Colors.orangeAccent,
  45. tabs: tabs.map((e) => Tab(text: e)).toList(),
  46. );
  47. Widget _buildTableBarView() => TabBarView(
  48. controller: _tabController,
  49. children: tabs.map((e) => Center(
  50. child: Text(e, style: TextStyle(color: Colors.white, fontSize: 20),
  51. ))).toList());
  52. }