如何使用多个导航器
问题描述:
我目前在我的扑动应用程序中有一个MaterialApp
,这使得使用Navigator
非常容易,这非常棒。但是,我现在试图找出如何为特定视图/小部件创建更多导航器。例如,我有一个自定义选项卡栏,其中包含另一个窗口小部件/视图。现在,我希望该窗口小部件/视图具有自己的导航堆栈。因此,我的目标是将标签栏保留在顶部,同时从我的窗口小部件/视图中导航到其他页面。
这个问题几乎就是这个:Permanent view with navigation bar in Flutter但在该代码中,没有MaterialApp
呢。嵌套0s给出时髦的结果,我不相信这将是一个解决方案。 如何使用多个导航器
任何想法?
答
您可以为每个页面创建新的导航器。作为参考检查CupertinoTabView
或者简单的例子:
import 'package:flutter/material.dart';
class Home extends StatelessWidget {
Navigator _getNavigator(BuildContext context) {
return new Navigator(
onGenerateRoute: (RouteSettings settings) {
return new MaterialPageRoute(builder: (context) {
return new Center(
child: new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Text(settings.name),
new FlatButton(
onPressed:() =>
Navigator.pushNamed(context, "${settings.name}/next"),
child: new Text('Next'),
),
new FlatButton(
onPressed:() =>
Navigator.pop(context),
child: new Text('Back'),
),
],
),
);
});
},
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Column(
children: <Widget>[
new Expanded(
child: _getNavigator(context),
),
new Expanded(
child: _getNavigator(context),
),
],
),
);
}
}
void main() {
runApp(new MaterialApp(
home: new Home(),
));
}
其实我知道的'TabView'但是这不是我的意思。我实际上想为我的tabbar中的每个标签页都有一个导航堆栈,想知道如何实现? –
还有一个问题,当我在我的第二级导航器(所以不是由我的'MaterialApp'创建的)我怎样才能让后退按钮工作?它只是关闭我的应用程序:/ –
@BramVanbilsen,如果它是你自己的按钮,请检查你使用的Navigator。你应该选择“第二”而不是“主”。如果是脚手架的按钮,请确保脚手架放置在“第二”导航器的范围内。 – Mogol