我想在我的应用程序中为所有设备(包括29以下的sdk版本)创建Android 10,像页面转换一样。
我知道,在颤栗中,我们可以建立我们自己的自定义页面转换动画,但我不知道如何拥有的设备与Android 10的缩放效果。
到目前为止
import 'package:flutter/material.dart';
Route zoomTransitionRoute(Widget child) {
return PageRouteBuilder(
pageBuilder: (context, animation, secondaryAnim) {
return ScaleTransition(
scale: animation,
child: child,
);
},
transitionsBuilder: (context, animation, secondaryAnim, child) {
var begin = Offset(0.0, 0.1);
var end = Offset(0.0, 0.0);
var curve = Curves.ease;
var tween = Tween(begin: begin, end: end);
var curvedAnim = CurvedAnimation(parent: animation, curve: curve);
return SlideTransition(
position: tween.animate(curvedAnim),
child: child,
);
},
transitionDuration: Duration(milliseconds: 200));
}这看起来不像是我想要的东西。有人能帮我吗?
编辑
这就是我想要达到的

注意父页面是如何缩放的,那么子页面也是如何从几乎.9的比例缩放的。
发布于 2021-05-10 15:15:20
我找到了一种使用内置PageTransitionsTheme来解决这个问题的方法。
在父MaterialApp中,
MaterialApp(
debugShowCheckedModeBanner: false,
theme: lightTheme,
darkTheme: darkTheme,
themeMode: ThemeMode.system,
home: RegisterPage(),
);lightTheme和darkTheme可以有一个pageTransitionsTheme属性,
ThemeData lightTheme = ThemeData(
//...
pageTransitionsTheme: myPageTransitionsTheme,
//...
);myPageTransitionsTheme被初始化为,
PageTransitionsTheme pageTransitionsTheme = PageTransitionsTheme(builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: ZoomPageTransitionsBuilder()
});在iOS和Android上都进行了测试,可以工作!
发布于 2020-12-14 15:59:47
你可以试试这个转位
因为有不同的转换效果,所以这里也有您想要的。
Navigator.push(context, PageTransition(type: PageTransitionType.fade, child: DetailScreen()));此外,您还可以直接使用淡入转换(您可以根据需要更改此转换),.like此
Navigator.push( context,
PageRouteBuilder(
pageBuilder: (c, a1, a2) => Page2(),
transitionsBuilder: (c, anim, a2, child) =>
FadeTransition(opacity: anim, child: child),
transitionDuration: Duration(milliseconds:
2000),
),
);还有更多细节,看看这个。
https://flutter.dev/docs/cookbook/animation/page-route-animation
https://stackoverflow.com/questions/65279088
复制相似问题