import 'package:didvan/pages/authentication/authentication.dart'; import 'package:didvan/pages/authentication/authentication_state.dart'; import 'package:didvan/pages/home/comments/comments.dart'; import 'package:didvan/pages/home/comments/comments_state.dart'; import 'package:didvan/pages/home/direct/widgets/direct.dart'; import 'package:didvan/pages/home/direct/direct_state.dart'; import 'package:didvan/pages/home/home.dart'; import 'package:didvan/pages/home/home_state.dart'; import 'package:didvan/pages/home/news/news_details/news_details.dart'; import 'package:didvan/pages/home/news/news_details/news_details_state.dart'; import 'package:didvan/pages/home/news/news_state.dart'; import 'package:didvan/pages/home/radar/radar_details/radar_details.dart'; import 'package:didvan/pages/home/radar/radar_details/radar_details_state.dart'; import 'package:didvan/pages/home/radar/radar_state.dart'; import 'package:didvan/pages/home/settings/about_us/about_us.dart'; import 'package:didvan/pages/home/settings/bookmarks/bookmarks.dart'; import 'package:didvan/pages/home/settings/bookmarks/bookmark_state.dart'; import 'package:didvan/pages/home/settings/bookmarks/filtered_bookmark/filtered_bookmark.dart'; import 'package:didvan/pages/home/settings/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart'; import 'package:didvan/pages/home/settings/direct_list/direct_list.dart'; import 'package:didvan/pages/home/settings/direct_list/direct_list_state.dart'; import 'package:didvan/pages/home/settings/general_settings/settings.dart'; import 'package:didvan/pages/home/settings/general_settings/settings_state.dart'; import 'package:didvan/pages/home/settings/profile/profile.dart'; import 'package:didvan/pages/splash/splash.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/widgets/image_cropper.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( const Splash(), ); case Routes.authenticaion: return _createRoute( ChangeNotifierProvider( create: (context) => AuthenticationState(), child: Authentication(isResetPassword: settings.arguments as bool), ), ); case Routes.home: return _createRoute( MultiProvider( providers: [ ChangeNotifierProvider( create: (context) => HomeState(), ), ChangeNotifierProvider( create: (context) => RadarState(), ), ChangeNotifierProvider( create: (context) => NewsState(), ), ], child: const Home(), ), ); case Routes.profile: return _createRoute( const Profile(), ); case Routes.aboutUs: return _createRoute( const AboutUs(), ); case Routes.imageCropper: return _createRoute( ImageCropper( data: settings.arguments as Map, ), ); case Routes.generalSettings: return _createRoute( ChangeNotifierProvider( create: (context) => GeneralSettingsState(), child: const GeneralSettings(), ), ); case Routes.radarDetails: return _createRoute( ChangeNotifierProvider( create: (context) => RadarDetailsState(), child: RadarDetails( pageData: settings.arguments as Map, ), ), ); case Routes.newsDetails: return _createRoute( ChangeNotifierProvider( create: (context) => NewsDetailsState(), child: NewsDetails( pageData: settings.arguments as Map, ), ), ); case Routes.directList: return _createRoute( ChangeNotifierProvider( create: (context) => DirectListState(), child: const DirectList(), ), ); case Routes.direct: return _createRoute( ChangeNotifierProvider( create: (context) => DirectState(), child: Direct(pageData: settings.arguments as Map), ), ); case Routes.comments: return _createRoute( ChangeNotifierProvider( create: (context) => CommentsState(), child: Comments( pageData: settings.arguments as Map, ), ), ); case Routes.bookmarks: return _createRoute( ChangeNotifierProvider( create: (context) => BookmarksState(), child: const Bookmarks(), ), ); case Routes.filteredBookmarks: return _createRoute( ChangeNotifierProvider( create: (context) => FilteredBookmarksState( settings.arguments as String, ), child: const FilteredBookmarks(), ), ); 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 MaterialPageRoute( builder: (context) => page, ); } }