为了提供自定义动画,我可以扩展MaterialPageRoute或PageRouteBuilder,它们似乎都做同样的工作。那么,两者有什么区别,我应该使用哪一种呢?
这是代码片段:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ElevatedButton(
onPressed: () => Navigator.push(context, Foo/BarRoute(Scaffold(appBar: AppBar()))),
child: Text('Navigate'),
),
);
}
}
class FooRoute<T> extends MaterialPageRoute<T> {
final Widget page;
FooRoute(this.page) : super(builder: (_) => page);
@override
Widget buildTransitions(_, animation, __, ___) {
return FadeTransition(opacity: animation, child: page);
}
}
class BarRoute<T> extends PageRouteBuilder<T> {
final Widget page;
BarRoute(this.page) : super(pageBuilder: (_, __, ___) => page);
@override
Widget buildTransitions(_, animation, __, ___) {
return FadeTransition(opacity: animation, child: page);
}
}
Run Code Online (Sandbox Code Playgroud)
我看到的唯一区别是在 iOS 设备上运行应用程序时MaterialPageRoute尝试在后台插入一些 iOS 类型的滑动动画。
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |