一尘不染

如何使用多个导航器

flutter

我现在有一个MaterialApp在我扑的应用程序,使得使用的Navigator非常容易,这是伟大的。但是,我现在试图
找出如何为特定视图/小工具创建更多导航器的方法。对于例如我有在其他窗口/视图的自定义选项卡吧。我现在想
的是小部件/查看有它自己的导航堆栈。因此,目标是在我从窗口小部件/视图内导航到其他页面时,将标签栏保持在顶部。
这个问题几乎完全是这样: Flutter中带有导航栏的永久视图,但是在该代码中,还没有MaterialApp。嵌套MaterialApps可以得出时髦的结果,我不认为那是解决方案。

有任何想法吗?


阅读 220

收藏
2020-08-13

共1个答案

一尘不染

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