如何使用Flutter Navigator推送多个路由

时间:2017-09-17 00:57:38

标签: flutter

如果我将一条路线推到我的应用程序的深处,有没有办法提供额外的路线,以便可以自定义后退/上行导航?

3 个答案:

答案 0 :(得分:4)

您可以连续多次致电Navigator.push();顶部下方的路线不会明显过渡,但它们会隐藏在下方。 (编辑:事实证明这不是真的,至少在iOS上,请参阅issue 12146

请注意,您还可以使用NavigatorState的方法更改顶部路线下方的路线,例如removeRouteBelowreplaceRouteBelow。这对于构建非线性导航体验非常有用。

答案 1 :(得分:1)

补充Collin的答案:

您可以使用NoAnimationPageRoute连续动画地连续推送多条路线,以解决过渡可见性问题。在iOS上运作良好。这是一种实现方法:

创建函数:

Future<T> pushWithoutAnimation<T extends Object>(Widget page) {
  Route route = NoAnimationPageRoute(builder: (BuildContext context) => page);
  return Navigator.push(context, route);
}

连续多次调用该函数:

pushWithoutAnimation(Screen1());
pushWithoutAnimation(Screen2());
pushWithoutAnimation(Screen3());

答案 2 :(得分:0)

使用这个包 easy_widgets 一次推送多个页面,动画只会在最后一页上工作。

安装此包后,

import 'package:easy_widget/easy_widget.dart';

现在你可以像这样简单地推送多个页面

context.pushAll(
      [FirstPage(), SecondPage(), ThirdPage()],
      transitionType: EasyTransitionType.rightToLeft, // define your animation/transition here
    );