PageRouteBuilder - переход этого размера с разными значениями для вертикальной и горизонтальной осей - PullRequest
0 голосов
/ 01 февраля 2020

У меня очень специфическая 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

...