博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给你的Flutter页面跳转加上动画
阅读量:6271 次
发布时间:2019-06-22

本文共 1842 字,大约阅读时间需要 6 分钟。

页面转场动画对于一个成熟的应用来说,是十分重要的。

Flutter 提供了很便捷的方式实现页面转场动画。

通常,在页面跳转的时候会使用 Flutter 提供的 MaterialPageRoute,它提供了默认的页面跳转动画。

当然,我们也可以定义自己的页面跳转动画。

1. 使用 PageRouteBuilder

使用 PageRouteBuilder,可以快速的自定义一个页面跳转动画。

Navigator.push(context, PageRouteBuilder(pageBuilder:                      (BuildContext context, Animation animation,                          Animation secondaryAnimation) {                    return ScaleTransition(                        scale: animation,                        alignment: Alignment.bottomRight,                        child: AnimPage());复制代码

2.继承 PageRoute

通过继承 PageRoute,也可以自定义页面跳转动画。

class FadeRoute extends PageRoute {  FadeRoute({    @required this.pageBuilder,    this.transitionDuration = const Duration(milliseconds: 300),    this.opaque = true,    this.barrierDismissible = false,    this.barrierColor,    this.barrierLabel,    this.maintainState = true,  });  final WidgetBuilder pageBuilder;  @override  final Duration transitionDuration;  @override  final bool opaque;  @override  final bool barrierDismissible;  @override  final Color barrierColor;  @override  final String barrierLabel;  @override  final bool maintainState;  @override  Widget buildPage(BuildContext context, Animation
animation, Animation
secondaryAnimation) => pageBuilder(context); @override Widget buildTransitions(BuildContext context, Animation
animation, Animation
secondaryAnimation, Widget child) { return FadeTransition( opacity: animation, child: pageBuilder(context), ); }}复制代码

关键就是实现 buildPage()buildTransitions() 两个函数。

buildTransitions() 中添加转场 Widget 。

使用:

Navigator.push(context, FadeRoute(builder: (context) {  return AnimPage();}));复制代码

定义起来不是很方便,但是便于封装统一的转场动画。

如何找到我?

转载于:https://juejin.im/post/5ca82834e51d4557944b5ffc

你可能感兴趣的文章
echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小
查看>>
IIS7显示ASP的详细错误信息到浏览器
查看>>
使用fiddler对手机APP进行抓包
查看>>
exit和_exit的区别
查看>>
Javascript、Jquery获取浏览器和屏幕各种高度宽度(单位都为px)
查看>>
php不重新编译,安装未安装过的扩展,如curl扩展
查看>>
JavaScript编码encode和decode escape和unescape
查看>>
ppp点对点协议
查看>>
html5游戏开发-简单tiger机
查看>>
Codeforces 712C Memory and De-Evolution
查看>>
编写的windows程序,崩溃时产生crash dump文件的办法
查看>>
Ural2110 : Remove or Maximize
查看>>
Django REST framework 的TokenAuth认证及外键Serializer基本实现
查看>>
《ArcGIS Runtime SDK for Android开发笔记》——问题集:如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题(转载)...
查看>>
Spring Boot日志管理
查看>>
动态注册HttpModule管道,实现global.asax功能
查看>>
使用 ES2015 编写 Gulp 构建
查看>>
[转]Using NLog for ASP.NET Core to write custom information to the database
查看>>
BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]
查看>>
MySQL 的instr函数
查看>>