Animated Navigation

PHOTO EMBED

Wed Dec 18 2024 13:38:20 GMT+0000 (Coordinated Universal Time)

Saved by @Samuel1347

import 'package:flutter/material.dart';

class AnimatedNavigation {
  static push({
    required BuildContext context,
    required Widget page,
  }) {
    return Navigator.of(context).push(
      PageRouteBuilder(
        transitionDuration: const Duration(milliseconds: 250),
        pageBuilder: (context, animation, secondaryAnimation) => page,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          const begin = 0.0;
          const end = 1.0;
          final tween = Tween(begin: begin, end: end);
          final offsetAnimation = animation.drive(tween);

          return FadeTransition(
            opacity: offsetAnimation,
            child: child,
          );
        },
      ),
    );
  }

  static pushAndRemoveUntil({
    required BuildContext context,
    required Widget page,
  }) {
    return Navigator.of(context).pushAndRemoveUntil(
      PageRouteBuilder(
        transitionDuration: const Duration(milliseconds: 250),
        pageBuilder: (context, animation, secondaryAnimation) => page,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          const begin = 0.0;
          const end = 1.0;
          final tween = Tween(begin: begin, end: end);
          final offsetAnimation = animation.drive(tween);

          return FadeTransition(
            opacity: offsetAnimation,
            child: child,
          );
        },
      ),
          (route) => false,
    );
  }
}
content_copyCOPY