import 'package:didvan/config/design_config.dart'; import 'package:didvan/pages/authentication/authentication.dart'; import 'package:didvan/pages/authentication/authentication_state.dart'; import 'package:didvan/pages/home/home.dart'; import 'package:didvan/pages/home/home_state.dart'; import 'package:didvan/pages/splash/splash.dart'; import 'package:didvan/pages/splash/splash_state.dart'; import 'package:didvan/routes/routes.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class RouteGenerator { static Route generateRoute(RouteSettings settings) { switch (settings.name) { case Routes.splash: return _createRoute( ChangeNotifierProvider( create: (context) => SplashState(), child: const Splash(), ), ); case Routes.authenticaion: return _createRoute( ChangeNotifierProvider( create: (context) => AuthenticationState(), child: const Authentication(), ), ); case Routes.home: return _createRoute( ChangeNotifierProvider( create: (context) => HomeState(), child: const Home(), ), ); default: return _errorRoute(); } } static Route _errorRoute() { return MaterialPageRoute(builder: (_) { return Scaffold( appBar: AppBar( title: const Text('Error'), ), body: const Center( child: Text('ERROR'), ), ); }); } static Route _createRoute(page) { return PageRouteBuilder( pageBuilder: (context, animation, secondaryAnimation) => page, transitionDuration: DesignConfig.mediumAnimationDuration, transitionsBuilder: (context, animation, secondaryAnimation, child) { return FadeTransition(opacity: animation, child: child); }, ); } }