Flutter 官方文档再过一遍
官方文档的链接可以点击这里.
读相关的工程源码
Flutter 提供了许多的sample.
Cookbook
Animate a page route transition 转场动画
地址: https://docs.flutter.dev/cookbook/animation/page-route-animation
转场动画的创建步骤如下:
- 设置 PageRouteBuilder
- 创建 Tween
- 添加 AnimatedWidget
- 使用 CurveTween
- 混合两个 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)