Flutter CupertinoTabScaffold


简介

实现iOS应用程序的选项卡式的根布局与结构。

一个在底部放置标签栏,标签栏之间或后面放置内容的脚手架.

这个脚手架, tabBar组件与tabBuilder组件是必须配置的。如果你为该脚手架配置的tabBar组件是 CupertinoTabBar的话. 它会自动监听CupertinoTabBar底部的切换事件, 去动态切换主体显示的内容.

选项卡的内容是使用tabBuilder选项卡生成器生成的。TabBuilder必须能够生成tabbar中组件数组长度相同数量的组件。不活动的选项卡将被移到后台并禁用其动画。

使用cupertinobview作为每个选项卡的内容,以支持具有并行导航状态和历史记录的选项卡。

通过BottomNavigationBarItem列表,在屏幕底部展示多个小组件, 默认下选择第一个小组件;

实例演示

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class CupertinoTabScaffoldDemo extends StatefulWidget {
  _Demo createState() => _Demo();
}

class _Demo extends State<CupertinoTabScaffoldDemo> {
  int index = 0;

  changeIndex(int _index) {
    this.setState(() {
      index = _index;
    });
  }
  Widget build(BuildContext context) {
    return SizedBox(
      height: 500,
      child: CupertinoTabScaffold(
        tabBar: CupertinoTabBar(
          items: <BottomNavigationBarItem> [
            BottomNavigationBarItem(
              title: Text("1"),
              icon: Icon(Icons.add),
            ),
            BottomNavigationBarItem(
              title: Text("2"),
              icon: Icon(Icons.add),
            )
          ],
        ),
        tabBuilder: (BuildContext context, int index) {
          return CupertinoTabView(
            builder: (BuildContext context) {
              return CupertinoPageScaffold(
                navigationBar: CupertinoNavigationBar(
                  middle: Text('Page 1 of tab $index'),
                ),
                child: Center(
                  child: CupertinoButton(
                    child: Text('Next page = $index'),
                    onPressed: () {
                      Navigator.of(context).push(
                        CupertinoPageRoute<void>(
                          builder: (BuildContext context) {
                            return CupertinoPageScaffold(
                              navigationBar: CupertinoNavigationBar(
                                middle: Text('Page 2 of tab $index'),
                              ),
                              child: Center(
                                child: CupertinoButton(
                                  child: const Text('Back'),
                                  onPressed: () { Navigator.of(context).pop(); },
                                ),
                              ),
                            );
                          },
                        ),
                      );
                    },
                  ),
                ),
              );
            },
          );
        },
      ),
    );
  }
}