Flutter 如何在没有动画的情况下弹出屏幕

tud*_*dan 6 flutter

基本上我想要Navigator.of(context).pop();但没有动画。

通过阅读文档,我看到您只能在推送路线时覆盖此动画。就我而言,我不知道在删除路线时是否要显示流行动画,因此我需要一个解决方案,允许我在调用时指定是否需要此动画pop()

这是可能的吗?

Oma*_*att 1

要创建/弹出没有动画的页面,您可以创建这样的自定义页面。

class NoAnimationPage extends Page<dynamic> {
  const NoAnimationPage({
    LocalKey? key,
    required this.child,
  }) : super(key: key);

  final Widget child;

  @override
  Route<dynamic> createRoute(BuildContext context) => PageRouteBuilder<dynamic>(
        settings: this,
        pageBuilder: (_, __, ___) => child, 
        // don't wrap in an animation to create a page without animation.
  );
}
Run Code Online (Sandbox Code Playgroud)

然后使用NoAnimationPage代替MaterialPageCupertinoPage