Navigator应该和CupertinoTabBar串联使用吗?

问题描述 投票:0回答:1

我正在学习flutter,并从一个简单的2个标签,底部导航栏应用开始(特别是基于Cupertino的)。这个视频 在解释基本原理方面做得很好,但我缺少一些东西。

在视频中提供的例子表明,当你点击一个 BottomNavigationBarItem你实际上并没有 航行 到一个新的屏幕,您只需 重现 在现有屏幕上的小部件。视频只调用 Navigator 后,他在页面容器中构建了一个按钮小组件。

是一个 BottomNavigationBarItem 在...中 CupertinoTabBar 应该调用 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 或不。

flutter dart navigation flutter-layout
1个回答
0
投票

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

这个... ... CupertinoTabBar 指数屏幕,可通过导航到 BottomNavigationBarItem 其实只是 CupertinoPageScaffold 小部件。然后在这些 CupertinoPageScaffold 屏幕,您可以使用 Navigator 的方法来导航到 其他 路径屏幕。

这样做的主要原因是每个索引屏幕都有自己的导航堆栈,所以你可以在屏幕(索引)1上,导航几页,到索引0再回来,你的导航堆栈状态就会被保存下来。

我花了几次时间阅读 关于CupertinoTabScaffold的文档。 来钻研我的大脑,但它是有道理的。

如果我说的不对,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.