如果我将一条路线推到我的应用程序的深处,有没有办法提供额外的路线,以便可以自定义后退/上行导航?
答案 0 :(得分:4)
您可以连续多次致电Navigator.push()
;顶部下方的路线不会明显过渡,但它们会隐藏在下方。 (编辑:事实证明这不是真的,至少在iOS上,请参阅issue 12146)
请注意,您还可以使用NavigatorState
的方法更改顶部路线下方的路线,例如removeRouteBelow
和replaceRouteBelow
。这对于构建非线性导航体验非常有用。
答案 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
);