import 'package:aman_kassa_flutter/views/check/image_show_container.dart'; import 'package:aman_kassa_flutter/views/history/history_view.dart'; import 'package:aman_kassa_flutter/views/payment/payment_view.dart'; import './route_names.dart'; import 'package:aman_kassa_flutter/views/home/home_view.dart'; import 'package:aman_kassa_flutter/views/login/login_view.dart'; import 'package:flutter/material.dart'; Route generateRoute(RouteSettings settings) { switch (settings.name) { case LoginViewRoute: return _getPageRoute( routeName: settings.name, viewToShow: LoginView(), ); case HomeViewRoute: return _getPageRoute( routeName: settings.name, viewToShow: HomeView(), ); case PaymentViewRoute: PaymentModel model = settings.arguments as PaymentModel; return _getPageRoute( routeName: settings.name, viewToShow: PaymentView(model: model), ); case HistoryViewRoute: return _getPageRoute( routeName: settings.name, viewToShow: HistoryView(), ); case ImageShowRoute: ImageShowModel data = settings.arguments as ImageShowModel; return SlideRightRoute(widget: ImageShowContainer(data)); default: return MaterialPageRoute( builder: (_) => Scaffold( body: Center( child: Text('No route defined for ${settings.name}')), )); } } PageRoute _getPageRoute({String routeName, Widget viewToShow}) { return MaterialPageRoute( settings: RouteSettings( name: routeName, ), builder: (_) => viewToShow); } class SlideRightRoute extends PageRouteBuilder { final Widget widget; SlideRightRoute({this.widget}) : super( pageBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation) { return widget; }, transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { return new SlideTransition( position: new Tween( begin: const Offset(1.0, 0.0), end: Offset.zero, ).animate(animation), child: child, ); }, ); }