iOS风格的页面布局脚手架结构,可指定最底部的导航切换栏可主体内容页。

相关组件

CupertinoTabBar

CupertinoTabScaffold基本用法

【tabBar】 : 页签条 【CupertinoTabBar】
【backgroundColor】 : 背景色 【Color】
【controller】 : 控制器 【CupertinoTabController】
【tabBuilder】 : 页面构造器 【IndexedWidgetBuilder】
155.gif

  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. class CustomCupertinoTabScaffold extends StatefulWidget {
  4. @override
  5. _CustomCupertinoTabScaffoldState createState() =>
  6. _CustomCupertinoTabScaffoldState();
  7. }
  8. class _CustomCupertinoTabScaffoldState
  9. extends State<CustomCupertinoTabScaffold> {
  10. var _position = 0;
  11. final iconsMap = {
  12. //底栏图标
  13. "图鉴": Icons.home, "动态": Icons.toys,
  14. "喜欢": Icons.favorite, "手册": Icons.class_,
  15. "我的": Icons.account_circle,
  16. };
  17. @override
  18. Widget build(BuildContext context) {
  19. return Container(
  20. width: MediaQuery.of(context).size.width,
  21. height: MediaQuery.of(context).size.height - 300,
  22. child: CupertinoTabScaffold(
  23. backgroundColor: Colors.grey.withAlpha(11),
  24. tabBar: _buildTabBar(),
  25. tabBuilder: (_, index) => _buildContent(index)),
  26. );
  27. }
  28. CupertinoTabBar _buildTabBar() => CupertinoTabBar(
  29. currentIndex: _position,
  30. onTap: (value) => setState(() => _position = value),
  31. items: iconsMap.keys
  32. .map((e) => BottomNavigationBarItem(
  33. icon: Icon(
  34. iconsMap[e],
  35. ),
  36. title: Text(e),
  37. ))
  38. .toList(),
  39. activeColor: Colors.blue,
  40. inactiveColor: Color(0xff333333),
  41. backgroundColor: Color(0xfff1f1f1),
  42. iconSize: 25.0,
  43. );
  44. _buildContent(int index) => Container(
  45. alignment: Alignment.center,
  46. child: Text(iconsMap.keys.toList()[index]),
  47. );
  48. }