Flutter Flatter如何使用BottomNavigationBar管理单独的导航堆栈?
我真的很困惑Flutter Flatter如何使用BottomNavigationBar管理单独的导航堆栈?,flutter,flutter-navigation,Flutter,Flutter Navigation,我真的很困惑flatter如何一次管理多个导航堆栈,并使用BottomNavigationBar在它们之间切换。到目前为止,我已经成功地将我的根Scaffold的主体与小部件交换,并且还可以更改Scaffold上的状态,以更改AppBar标题并设置底部导航BarItem的索引。我还可以看到在MaterialApp上设置routes将如何允许我按下和弹出其他屏幕。问题是,当您使用选项卡栏导航模式时,您希望能够管理单独的堆栈。如果我深入到一个部分并切换选项卡中有3个级别,我希望能够在该特定部分的堆栈
flatter
如何一次管理多个导航堆栈,并使用BottomNavigationBar
在它们之间切换。到目前为止,我已经成功地将我的根Scaffold
的主体
与小部件
交换,并且还可以更改Scaffold
上的状态,以更改AppBar
标题并设置底部导航BarItem
的索引。我还可以看到在MaterialApp
上设置routes
将如何允许我按下和弹出其他屏幕。问题是,当您使用选项卡栏导航模式时,您希望能够管理单独的堆栈。如果我深入到一个部分并切换选项卡中有3个级别,我希望能够在该特定部分的堆栈中,并且能够在它们之间跳转
这是如何管理与颤振?理想情况下,应用程序应该有一个主应用程序Scaffold
,用于定义底部导航栏
,抽屉
,以及用于在不同根级别屏幕之间切换的主逻辑。然后,这些屏幕应该为该部分管理自己的AppBar
和相关的操作
在我进一步讨论《颤振》之前,我真的很想了解这一点,因为现在,一想到必须用一个脚手架来管理一切,我就充满了恐惧
我猜,当您使用Navigator
时,它使用上下文
将堆栈保持在启动推送的屏幕上下文中,但我仍然不理解它如何将支架
分开
非常感谢您的见解。这篇精彩的文章给了我答案:
您需要为主节切换器使用索引堆栈
,然后使用小部件
,为每个主节返回一个导航器
。此Navigator
设置该部分的路由(如果已知),但可能只是根
我不知道颤振社区是否已经有了导航模式或命名约定,但我已经使用了$(Section)Navigator
。下面是我为测试创建的无状态小部件的一个示例:
class DashboardNavigator extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Navigator(
onGenerateRoute: (RouteSettings settings) {
return MaterialPageRoute(
settings: settings,
builder: (BuildContext context) {
switch (settings.name) {
case '/':
return DashboardRoot();
case '/login':
return ScreenLogin(destination: allDestinations[0]);
default:
return DashboardRoot();
}
},
);
},
);
}
}
这主要摘自Hans Muller的文章,这篇文章帮了大忙。这可能是答案:-在文章的结尾,他谈到了在每个屏幕上使用单独的导航器。