Navigator 是否应该与 CupertinoTabBar 一起使用?

Should Navigator be used in tandem with a CupertinoTabBar?

我正在学习 flutter,并从一个简单的 2 选项卡、底部导航栏应用程序(特别是基于 Cupertino)开始。 This video 很好地解释了基础知识,但我遗漏了一些东西。

视频中提供的示例表明,当您点击 BottomNavigationBarItem 时,您实际上并没有 导航 到新屏幕,您只是 重新呈现 现有屏幕上的小部件。视频只调用了Navigator他在页面容器中构造了一个按钮widget后

CupertinoTabBar 中的 BottomNavigationBarItem 是否应该调用 Navigator?还是我完全误解了 CupertinoTabBar 的用例?

这是我的示例代码:

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

class HomeScreen extends StatelessWidget
{
  @override
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      tabBar: CupertinoTabBar(
        items: <BottomNavigationBarItem> [
          BottomNavigationBarItem(
            icon: Icon(Icons.menu),
          ),
          BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.person_solid),
          ), 
        ],
      ),
      tabBuilder: (BuildContext context, int index) {
        switch (index) {
          case 0:
            return new Container(
                color: Colors.red
             ); break;
          case 1:
            return new Container(
                color: Colors.white
             ); break;
          default: {
            return new Container(
                color: Colors.white
             );
          }
        }
      },
    );
  }
}

我想知道如何更改 switch 以调用或不调用 Navigator

所以看起来正确的模式是:

通过 BottomNavigationBarItem 导航到的 CupertinoTabBar 索引/屏幕实际上只是 CupertinoPageScaffold 小部件。然后在这些 CupertinoPageScaffold 屏幕中,您可以使用 Navigator 方法导航到 other 路线/屏幕。

这有意义的主要原因是每个索引/屏幕都维护自己的导航堆栈,因此您可以在屏幕(索引)1 上导航几页,转到索引 0 并返回,您的导航堆栈状态为保存。

documentation on CupertinoTabScaffold 我花了好几遍才把它牢记在心,但它是有道理的。

如果我在这方面有误,请告诉我。