У меня очень специфическая c потребность в моем переходе PageRouteBuilder, мне нужно, чтобы он анимировал размер страницы / виджета, но он должен иметь разные начальные и конечные значения для вертикальной и горизонтальной оси.
Вот моя попытка:
class PositionedSizeRoute extends PageRouteBuilder {
final Widget page;
final Size screenSize;
final Size size;
final Offset position;
PositionedSizeRoute({this.page, this.screenSize, this.size, this.position})
: super(
pageBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
) =>
page,
transitionDuration: Duration(milliseconds: 2000),
transitionsBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child,
) =>
Align(
child: SizeTransition(
sizeFactor: Tween<double>(
begin: size.height,
end: screenSize.height,
).animate(
CurvedAnimation(
parent: animation,
curve: Curves.easeInOut,
),
),
axis: Axis.vertical,
child: SizeTransition(
sizeFactor: Tween<double>(
begin: size.width,
end: screenSize.width,
).animate(
CurvedAnimation(
parent: animation,
curve: Curves.easeInOut,
),
),
axis: Axis.horizontal,
child: child,
),
),
),
);
}
Кажется, просто "сразу" перейти к конечному размеру вместо анимации размера, как вы можете увидеть в прикрепленном видео .
Как я могу это исправить? Это что-то с выравниванием оси? Разве это не может быть сделано?
PS Это попытка исправить эту проблему у меня есть.
Спасибо
Søren