import 'package:flutter/material.dart'; import 'package:satu/core/models/dictionary/category_row_data.dart'; import 'package:satu/core/models/dictionary/good_row_data.dart'; import 'package:satu/core/models/entity_data/transaction_data.dart'; import 'package:satu/views/dictionaries/category/category_edit.dart'; import 'package:satu/views/dictionaries/category/category_select_view.dart'; import 'package:satu/views/dictionaries/goods/goods_edit.dart'; import 'package:satu/views/login/login_view.dart'; import 'package:satu/views/main/main_view.dart'; import 'package:satu/views/settings/printer_bluetooth/printer_view.dart'; import 'package:satu/views/work/views/add_by_barcode/add_by_barcode_view.dart'; import 'package:satu/views/work/views/add_product/add_product_view.dart'; import 'package:satu/views/work/views/contragent/select_contragent_view.dart'; import 'package:satu/views/work/views/payment/payment_view.dart'; import 'package:satu/views/work/views/receipt/receipt_view.dart'; import 'package:satu/views/work/work_view.dart'; import './route_names.dart'; Route generateRoute(RouteSettings settings) { switch (settings.name) { case loginViewRoute: //LoginModel model = settings.arguments as LoginModel; return _getPageRoute( routeName: settings.name!, viewToShow: LoginView(), ); case workViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: WorkView(), ); case mainViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: MainView(), ); case addProductViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: AddProductView(), ); case addByBarcodeViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: AddByBarcodeView(), ); case settingPrinterBluetoothViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: const PrinterView(), ); case contragentSelectViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: SelectContragentView(), ); case paymentViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: const PaymentView(), ); case categoryEditRoute: final CategoryRowDao category = settings.arguments! as CategoryRowDao; return _getPageRoute( routeName: settings.name!, viewToShow: CategoryEdit(category: category,), ); case categorySelectViewRoute: return _getPageRoute( routeName: settings.name!, viewToShow: CategorySelectView(), ); case goodsEditRoute: final GoodRowDao good = settings.arguments! as GoodRowDao; return _getPageRoute( routeName: settings.name!, viewToShow: GoodEdit(good: good,), ); case receiptViewRoute: final TransactionData data = settings.arguments! as TransactionData; //return SlideRightRoute(widget: ImageShowContainer(data)); return _getPageRoute( routeName: settings.name, viewToShow: ReceiptView(transactionData: 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, ); }, ); }