如何使用多个导航器

问题描述:

我目前在我的扑动应用程序中有一个MaterialApp,这使得使用Navigator非常容易,这非常棒。但是,我现在试图找出如何为特定视图/小部件创建更多导航器。例如,我有一个自定义选项卡栏,其中包含另一个窗口小部件/视图。现在,我希望该窗口小部件/视图具有自己的导航堆栈。因此,我的目标是将标签栏保留在顶部,同时从我的窗口小部件/视图中导航到其他页面。
这个问题几乎就是这个:Permanent view with navigation bar in Flutter但在该代码中,没有MaterialApp呢。嵌套0​​s给出时髦的结果,我不相信这将是一个解决方案。
enter image description here如何使用多个导航器

任何想法?

您可以为每个页面创建新的导航器。作为参考检查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(), 
)); 
} 

Screenshot

+0

其实我知道的'TabView'但是这不是我的意思。我实际上想为我的tabbar中的每个标签页都有一个导航堆栈,想知道如何实现? –

+0

还有一个问题,当我在我的第二级导航器(所以不是由我的'MaterialApp'创建的)我怎样才能让后退按钮工作?它只是关闭我的应用程序:/ –

+0

@BramVanbilsen,如果它是你自己的按钮,请检查你使用的Navigator。你应该选择“第二”而不是“主”。如果是脚手架的按钮,请确保脚手架放置在“第二”导航器的范围内。 – Mogol