您可以Navigator.push()连续拨打几次;顶部路线下方的路线不会明显过渡,但会隐藏在下方。(编辑:事实并非如此,至少在iOS上如此,请参见问题12146)
请注意,您还可以在顶部路线如下ALTER航线使用的方法NavigatorState,比如removeRouteBelow和replaceRouteBelow。这对于构建非线性导航体验很有用。
我通过在没有动画的情况下连续推送几条路线来解决过渡可见性问题,从而解决了这个问题。到目前为止,它对我来说在 iOS 上运行良好。这是一种方法。
NoAnimationPageRoute通过扩展MaterialPageRoute和覆盖创建一个buildTransitions:
class NoAnimationPageRoute<T> extends MaterialPageRoute<T> {
NoAnimationPageRoute({ WidgetBuilder builder }) : super(builder: builder);
@override
Widget buildTransitions(
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
return child;
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个函数,使用NoAnimationPageRoute:
Future<T> pushWithoutAnimation<T extends Object>(Widget page) {
Route route = NoAnimationPageRoute(builder: (BuildContext context) => page);
return Navigator.push(context, route);
}
Run Code Online (Sandbox Code Playgroud)
连续多次调用该函数:
pushWithoutAnimation(Screen1());
pushWithoutAnimation(Screen2());
pushWithoutAnimation(Screen3());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |