Navigator.push 没有动画 - Flutter

Posted

技术标签:

【中文标题】Navigator.push 没有动画 - Flutter【英文标题】:Navigator.push without animation - Flutter 【发布时间】:2020-11-10 01:31:14 【问题描述】:

我有几个带有下一步按钮的注册表单,我想在不同的屏幕之间切换

onTap: () =>  Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => SomeOtherScaffold()))
  ,

但没有自带的默认动画。

【问题讨论】:

***.com/questions/50196913/… 这个问题的重复 - ***.com/questions/49874272/… 【参考方案1】:

如果你想使用其他动画,你可以使用transitionBuilder,在你的PageRoute。下面为您介绍如何使用它:

import 'package:flutter/material.dart';

main() 
  runApp(MaterialApp(
    home: Page1(),
  ));


class Page1 extends StatelessWidget 
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: RaisedButton(
          child: Text('Go!'),
          onPressed: () 
            Navigator.of(context).push(_createRoute());
          ,
        ),
      ),
    );
  


Route _createRoute() 
  return PageRouteBuilder(
    pageBuilder: (context, animation, secondaryAnimation) => Page2(),
    transitionsBuilder: (context, animation, secondaryAnimation, child) 
      return child;
    ,
  );

如果你想立即过渡,你可以这样做:

transitionDuration: Duration(seconds: 0)

这会将转换时间减少到 0 秒,最终会加快转换速度。

要了解有关Page Animation Transition 的更多信息,请关注以下文章:

    Page Route Animation Everything you need for Flutter Page Transition

如果你不想要默认的,你需要为你的过渡定义一些东西,这个答案将帮助你实现这一点。

【讨论】:

以上是关于Navigator.push 没有动画 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章

Dart / Flutter:在没有上下文的页面之间导航(使用 Navigator)(所以没有 Navigator.push?)

Flutter 页面路由过渡动画

在 Flutter 中使用 Navigator.push() 时出现黑屏

Flutter学习指南:交互手势和动画,安卓工程师的面试题

如何删除默认导航路线动画

每次Navigator.push到下一页时都会调用的回调