getRoute<T, W extends Widget> method

  1. @override
PageRoute<T> getRoute<T, W extends Widget>(
  1. SimpleWidgetBuilder<W> builder
)
override

Returns the typed route.

Implementation

@override
PageRoute<T> getRoute<T, W extends Widget>(
  SimpleWidgetBuilder<W> builder,
) {
  return PageRouteBuilder(
    pageBuilder: (context, a1, a2) => builder(),
    transitionsBuilder: (context, a1, a2, child) {
      return Stack(
        children: [
          SlideTransition(
            position: Tween<Offset>(
                    begin: const Offset(0.0, 0.0),
                    end: switch (direction) {
                      SlideDirection.rightToLeft => const Offset(-1.0, 0.0),
                      SlideDirection.leftToRight => const Offset(1.0, 0.0),
                      SlideDirection.topToBottom => const Offset(0.0, 1.0),
                      SlideDirection.bottomToTop => const Offset(0.0, -1.0),
                    })
                .animate(
              CurvedAnimation(
                parent: a1,
                curve: curve,
              ),
            ),
            child: currentPage,
          ),
          SlideTransition(
            position: Tween<Offset>(
              begin: switch (direction) {
                SlideDirection.rightToLeft => const Offset(1.0, 0.0),
                SlideDirection.leftToRight => const Offset(-1.0, 0.0),
                SlideDirection.topToBottom => const Offset(0.0, -1.0),
                SlideDirection.bottomToTop => const Offset(0.0, 1.0),
              },
              end: Offset.zero,
            ).animate(
              CurvedAnimation(
                parent: a1,
                curve: curve,
              ),
            ),
            child: child,
          )
        ],
      );
    },
    settings: RouteSettings(name: W.toString()),
    transitionDuration: duration,
    reverseTransitionDuration: duration,
  );
}