我正在学习颤振,并从一个简单的 2 选项卡、底部导航栏应用程序(特别是基于库比蒂诺)开始。这个视频在解释基本原理方面做得很好,但我错过了一些东西。
视频中提供的示例表明,当您点击BottomNavigationBarItem
时,您实际上并没有导航到新屏幕,您只需在现有屏幕上重新渲染小部件。视频仅在Navigator
在页面容器中构造按钮小部件后
调用。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
方法导航到其他路线/屏幕。
这有意义的主要原因是每个索引/屏幕都维护自己的导航堆栈,因此您可以在屏幕(索引)1上,导航几个页面,转到索引0并返回,并保留您的导航堆栈状态。
我花了几次阅读CupertinoTabScaffold上的文档才能将其钻入我的大脑,但这是有道理的。
如果我错了,请告诉我。