我正在学习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
或不。
所以看起来正确的模式是。
这个... ... CupertinoTabBar
指数屏幕,可通过导航到 BottomNavigationBarItem
其实只是 CupertinoPageScaffold
小部件。然后在这些 CupertinoPageScaffold
屏幕,您可以使用 Navigator
的方法来导航到 其他 路径屏幕。
这样做的主要原因是每个索引屏幕都有自己的导航堆栈,所以你可以在屏幕(索引)1上,导航几页,到索引0再回来,你的导航堆栈状态就会被保存下来。
我花了几次时间阅读 关于CupertinoTabScaffold的文档。 来钻研我的大脑,但它是有道理的。
如果我说的不对,请告诉我。