aman-kassa-flutter/lib/core/router.dart

114 lines
3.7 KiB
Dart

import 'package:aman_kassa_flutter/views/bank_setting/bank_setting_view.dart';
import 'package:aman_kassa_flutter/views/bank_view/bank_view.dart';
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/info_kkm/info_kkm_view.dart';
import 'package:aman_kassa_flutter/views/payment/payment_view.dart';
import 'package:aman_kassa_flutter/views/payment_nfc/payment_nfc_view.dart';
import 'package:aman_kassa_flutter/views/qr_view/qr_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<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case LoginViewRoute:
LoginModel model = settings.arguments as LoginModel;
return _getPageRoute(
routeName: settings.name,
viewToShow: LoginView(
loginModel: model,
),
);
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 PaymentNfcViewRoute:
PaymentModel model = settings.arguments as PaymentModel;
return _getPageRoute(
routeName: settings.name,
viewToShow: PaymentNfcView(model: model),
);
case HistoryViewRoute:
return _getPageRoute(
routeName: settings.name,
viewToShow: HistoryView(),
);
case InfoKkmViewRoute:
return _getPageRoute(
routeName: settings.name,
viewToShow: InfoKkmView(),
);
case BankViewRoute:
return _getPageRoute(
routeName: settings.name,
viewToShow: BankView(),
);
case BankSettingViewRoute:
return _getPageRoute(
routeName: settings.name,
viewToShow: BankSettingView(),
);
case QrViewRoute:
ImageShowModel data = settings.arguments as ImageShowModel;
return _getPageRoute(
routeName: settings.name,
viewToShow: QrView(data),
);
case ImageShowRoute:
ImageShowModel data = settings.arguments as ImageShowModel;
//return SlideRightRoute(widget: ImageShowContainer(data));
return _getPageRoute(
routeName: settings.name,
viewToShow: 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<double> animation,
Animation<double> secondaryAnimation) {
return widget;
},
transitionsBuilder: (BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
return new SlideTransition(
position: new Tween<Offset>(
begin: const Offset(1.0, 0.0),
end: Offset.zero,
).animate(animation),
child: child,
);
},
);
}