Flutter 是否可以在颤振中更改showGeneralDialog()的默认动画?

Flutter 是否可以在颤振中更改showGeneralDialog()的默认动画?,flutter,dart,flutter-animation,Flutter,Dart,Flutter Animation,我正在尝试自定义showGeneralDialog以显示我的Transform.scale动画。我只是想知道是否有办法将小部件的默认动画更改为曲线动画 如a1和a2,在: transitionBuilder: (context, a1, a2, widget) { 例如,我希望Transform.scale具有bounceIn效果 另外,有人能解释一下showGeneralDialog小部件的transitionBuilder:(context,a1,a2,widget){}和pa

我正在尝试自定义showGeneralDialog以显示我的Transform.scale动画。我只是想知道是否有办法将小部件的默认动画更改为曲线动画

如a1和a2,在:

      transitionBuilder: (context, a1, a2, widget) {
例如,我希望
Transform.scale
具有
bounceIn
效果

另外,有人能解释一下showGeneralDialog小部件的
transitionBuilder:(context,a1,a2,widget){}
pageBuilder:(context,animation1,animation2){}
之间的区别吗?我如何正确使用它们


谢谢

是,可以通过覆盖transitionBuilder参数来实现

1.创建新的showDialog()方法 通常,开发人员使用showDialog放置一些覆盖底层的对话框 屏幕

在这个应用程序中,使用新方法很方便,因此可以简单地重复使用 通过我们的申请

新建对话框。省道

Future showNewDialog(
返回显示一般对话框(
...
转换持续时间:常量持续时间(毫秒:400),
转换生成器:_buildNewTransition,
);
}
我们只重用showGeneralDialog()方法,并自定义其与动画相关的 参数:持续时间的its
transitionDuration
和its
transitionBuilder
作为动画组件

2.定义新的动画组件 在这个演示中,我们通过将
子部件
包装到
ScaleTransition
。然后我们定义了它的曲线,而不是仅在
curve
param中定义,或者 在
曲线
反向曲线

新建对话框。省道

Widget\u buildNewTransition(
构建上下文上下文,
动画,,
动画二级动画,
孩子,
) {
返回刻度转换(
比例:曲线动画(
家长:动画,
曲线:Curves.bounceIn,
反向曲线:Curves.bounceIn,
),
孩子:孩子,
);
}
3.显示我们的新对话框 最后,我们可以在应用程序中的任何地方调用这个动画对话框 代码:

main.dart

RaisedButton.icon(
图标:图标(Icons.info\u轮廓),
标签:文本(“打开对话框”),
已按下:(){
showNewDialog(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:文本(“反弹”),
);
},
);
},
),
存储库 你可以看看这里

演示

页面生成器与转换生成器 如果我们在中查看DialogRoute定义,我们可以得出以下结论:

每个showDialog()方法将按以下顺序运行和传递参数:

  • 显示对话框
  • 显示通用对话框
  • _对话路线
  • 流行音乐
  • ModalRoute 等等
  • 看看buildTransitions方法DialogRoute,它默认返回FadeTransition

    正如我所尝试的,如果我们通过调用showGeneralDialog将transitionBuilder:null设置为空,应用程序将显示对话框,仍然处于动画状态

    返回showGeneralDialog(
    ...,
    transitionBuilder:null,
    );
    
    相反,如果我们通过调用showGeneralDialog将pageBuilder:null设置为空,则应用程序将不显示任何内容

    返回showGeneralDialog(
    ...,
    页面生成器:null,
    转换生成器:_buildNewTransition,
    );
    
    我们可以得出结论:

    • pageBuilder虽然有一些参数
      动画
      SecondaryAnimation
      ,用于显示定义小部件

    • transitionBuilder用于定义动画 已处理,如显示对话框的颤振


    是,可以通过覆盖transitionBuilder参数来实现

    1.创建新的showDialog()方法 通常,开发人员使用showDialog放置一些覆盖底层的对话框 屏幕

    在这个应用程序中,使用新方法很方便,因此可以简单地重复使用 通过我们的申请

    新建对话框。省道

    Future showNewDialog(
    返回显示一般对话框(
    ...
    转换持续时间:常量持续时间(毫秒:400),
    转换生成器:_buildNewTransition,
    );
    }
    
    我们只重用showGeneralDialog()方法,并自定义其与动画相关的 参数:持续时间的its
    transitionDuration
    和its
    transitionBuilder
    作为动画组件

    2.定义新的动画组件 在这个演示中,我们通过将
    子部件
    包装到
    ScaleTransition
    。然后我们定义了它的曲线,而不是仅在
    curve
    param中定义,或者 在
    曲线
    反向曲线

    新建对话框。省道

    Widget\u buildNewTransition(
    构建上下文上下文,
    动画,,
    动画二级动画,
    孩子,
    ) {
    返回刻度转换(
    比例:曲线动画(
    家长:动画,
    曲线:Curves.bounceIn,
    反向曲线:Curves.bounceIn,
    ),
    孩子:孩子,
    );
    }
    
    3.显示我们的新对话框 最后,我们可以在应用程序中的任何地方调用这个动画对话框 代码:

    main.dart

    RaisedButton.icon(
    图标:图标(Icons.info\u轮廓),
    标签:文本(“打开对话框”),
    已按下:(){
    showNewDialog(
    上下文:上下文,
    生成器:(BuildContext上下文){
    返回警报对话框(
    标题:文本(“反弹”),
    );
    },
    );
    },
    ),
    
    存储库 你可以看看这里

    演示

    页面生成器与转换生成器 如果我们在中查看DialogRoute定义,我们可以得出以下结论:

    每个showDialog()方法将按以下顺序运行和传递参数:

  • 肖迪