給你的Flutter頁面跳轉加上動畫

目錄傳送門:《Flutter快速上手指南》先導篇git

頁面轉場動畫對於一個成熟的應用來講,是十分重要的。github

Flutter 提供了很便捷的方式實現頁面轉場動畫。bash

一般,在頁面跳轉的時候會使用 Flutter 提供的 MaterialPageRoute,它提供了默認的頁面跳轉動畫。ide

固然,咱們也能夠定義本身的頁面跳轉動畫。函數

1. 使用 PageRouteBuilder

使用 PageRouteBuilder,能夠快速的自定義一個頁面跳轉動畫。post

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<double> animation,
      Animation<double> secondaryAnimation) => pageBuilder(context);

  @override
  Widget buildTransitions(BuildContext context, Animation<double> animation,
      Animation<double> secondaryAnimation, Widget child) {
    return FadeTransition(
      opacity: animation,
      child: pageBuilder(context),
    );
  }
}
複製代碼

關鍵就是實現 buildPage()buildTransitions() 兩個函數。ui

buildTransitions() 中添加轉場 Widget 。this

使用:spa

Navigator.push(context, FadeRoute(builder: (context) {
  return AnimPage();
}));
複製代碼

定義起來不是很方便,可是便於封裝統一的轉場動畫。

目錄傳送門:《Flutter快速上手指南》先導篇

如何找到我?

傳送門:CoorChice 的主頁

傳送門:CoorChice 的 Github

相關文章
相關標籤/搜索