Skip to main content

Flutter 官方文档再过一遍

官方文档的链接可以点击这里.

读相关的工程源码

Flutter 提供了许多的sample.

  1. Gallery: https://github.com/flutter/gallery.git

Cookbook

Animate a page route transition 转场动画

地址: https://docs.flutter.dev/cookbook/animation/page-route-animation

转场动画的创建步骤如下:

  1. 设置 PageRouteBuilder
  2. 创建 Tween
  3. 添加 AnimatedWidget
  4. 使用 CurveTween
  5. 混合两个 Tweens

如下是具体细节.

设置 PageRouteBuilder

要开始的话, 使用 PageRouteBuilder 来创建 Route. PageRouteBuilder 有两个回调, 一个用于创建 route(pageBuilder), 一个用于创建转场(transistionsBuilder).

目前框架可以保证 pageBuilder 只调用一次, 即只会在 route 第一次 build 的时候调用.

下面的代码示例创建了两个 route:

import 'package:flutter/material.dart';

void main() {
runApp(
const MaterialApp(
home: Page1(),
),
);
}

class Page1 extends StatelessWidget {
const Page1({super.key});


Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.of(context).push(_createRoute());
},
child: const Text('Go!'),
),
),
);
}
}

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

class Page2 extends StatelessWidget {
const Page2({super.key});


Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: const Center(
child: Text('Page 2'),
),
);
}
}

创建一个 Tween

这里想创建一个从下方往上走的动画, Offset 是从 (0, 1) 到 (0, 0)

动画路由