首页 > 解决方案 > 无动画转移页面 | Navigator.of(context).pushNamed()

问题描述

我正在为网络使用颤振。页面正在转换Navigator.of(context).pushNamed(Home.route);,但此时播放动画。是否可以禁用此动画?

main()我在函数中写了如下代码main.dart

MaterialApp(
initialRoute: '/home',
routes: {
  '/home': (context) => Home(),
  '/profile': (context) => Profile(),
},

@immutable
class Home extends StatelessWidget {
  static const String route = '/home';
  ....
}

@immutable
class Profile extends StatelessWidget {
  static const String route = '/profile';
....
}

正如我之前提到的,以下代码用于转换页面。

 Navigator.of(context).pushNamed(Home.route);

我可以通过使用来转换没有动画的页面Navigator.push,但我想使用,Navigator.of(context).pushNamed()因为链接没有改变。

有谁知道如何在仍在使用时禁用动画Navigator.of(context).pushNamed()?谢谢你。

标签: flutterdartflutter-web

解决方案


我解决了这个问题。

我没有使用Navigator.of().pushNamed(),但是可以显示页面的 URL。

首先,我像这样删除routes:MaterialApp()添加onGenerateRoute:

onGenerateRoute: (settings) {
      Widget wid = Home();
      switch (settings.name) {
        case "/home":
          wid = Home();
          break;
        case "/profile":
          wid = Profile();
          break;
      }

      if (wid != null) {
        return PageRouteBuilder(
            settings:
                settings, // Pass this to make popUntil(), pushNamedAndRemoveUntil(), works
            pageBuilder: (_, __, ___) => wid,
            transitionsBuilder: (_, a, __, c) =>
                FadeTransition(opacity: a, child: c));
      }
      // Unknown route
      return MaterialPageRoute(builder: (_) => Home());
    },

当你想移动页面时,只需调用它;

Navigator.of(context).pushReplacementNamed('/home');

推荐阅读