import 'package:fcs/model/shipment_model.dart'; import 'package:fcs/model_fcs/package_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'package:fcs/model/buyer_model.dart'; import 'package:fcs/model/delivery_model.dart'; import 'package:fcs/model/manual_model.dart'; import 'package:fcs/model/notification_model.dart'; import 'package:fcs/model/pd_model.dart'; import 'package:fcs/model/reg_model.dart'; import 'package:fcs/model/report_model.dart'; import 'package:fcs/model/storage_model.dart'; import 'package:fcs/model/test_model.dart'; import 'package:fcs/pages/email_page.dart'; import 'package:fcs/pages/login_page.dart'; import 'model/announcement_model.dart'; import 'model/chart_model.dart'; import 'model/device_model.dart'; import 'model/do_model.dart'; import 'model/employee_model.dart'; import 'model/invoice_model.dart'; import 'model/language_model.dart'; import 'model/log_model.dart'; import 'model/main_model.dart'; import 'model/pickup_model.dart'; import 'model/po_model.dart'; import 'model/product_model.dart'; import 'model/report_user_model.dart'; import 'model/shipment_rate_model.dart'; import 'model/user_model.dart'; import 'pages/home_page.dart'; import 'pages/splash.dart'; import 'pages/term.dart'; import 'pages/welcome_page.dart'; import 'widget/localization/app_translations_delegate.dart'; import 'widget/localization/transalation.dart'; class App extends StatefulWidget { @override _AppState createState() => _AppState(); } class _AppState extends State { final MainModel mainModel = new MainModel(); final UserModel userModel = new UserModel(); final ProductModel productModel = new ProductModel(); final EmployeeModel employeeModel = new EmployeeModel(); final POSubmissionModel poSubmissionModel = new POSubmissionModel(); final DOModel doModel = new DOModel(); final LanguageModel lanuguageModel = new LanguageModel(); final StorageModel storageModel = new StorageModel(); final PDModel pdModel = new PDModel(); final RegModel regModel = new RegModel(); final BuyerModel buyerModel = new BuyerModel(); final NotificationModel notificationModel = new NotificationModel(); final ChartModel chartModel = new ChartModel(); final DeliveryModel deliveryModel = new DeliveryModel(); final ManualModel manualModel = new ManualModel(); final TestModel testModel = new TestModel(); final LogModel logModel = new LogModel(); final PhoneDeviceModel phoneDeviceModel = new PhoneDeviceModel(); final ReportModel reportModel = new ReportModel(); final AnnouncementModel announcementModel = new AnnouncementModel(); final ReportUserModel reportUserModel = new ReportUserModel(); final PickUpModel pickUpModel = new PickUpModel(); final ShipmentRateModel shipmentRateModel = new ShipmentRateModel(); final ShipmentModel shipmentModel = new ShipmentModel(); final PackageModel packageModel = new PackageModel(); final InvoiceModel invoiceModel = new InvoiceModel(); AppTranslationsDelegate _newLocaleDelegate; @override void initState() { super.initState(); _newLocaleDelegate = AppTranslationsDelegate(newLocale: null); Translation().onLocaleChanged = onLocaleChange; mainModel ..addModel(userModel) ..addModel(employeeModel) ..addModel(lanuguageModel) ..addModel(storageModel) ..addModel(regModel) ..addModel(poSubmissionModel) ..addModel(doModel) ..addModel(productModel) ..addModel(pdModel) ..addModel(buyerModel) ..addModel(notificationModel) ..addModel(chartModel) ..addModel(deliveryModel) ..addModel(logModel) ..addModel(manualModel) ..addModel(phoneDeviceModel) ..addModel(regModel) ..addModel(announcementModel) ..addModel(reportModel) ..addModel(testModel) ..addModel(reportUserModel) ..addModel(pickUpModel) ..addModel(shipmentRateModel) ..addModel(shipmentModel) ..addModel(packageModel) ..addModel(shipmentRateModel) ..addModel(invoiceModel); this.mainModel.init(); } void onLocaleChange(Locale locale) { setState(() { _newLocaleDelegate = AppTranslationsDelegate(newLocale: locale); }); } Map route(BuildContext context) { final routes = { '/': (_) => SplashScreen(), '/home': (_) => HomePage(), '/welcome': (context) => WelcomePage(), '/term': (context) => Term( agreePage: true, ), '/login': (context) => LoginPage(), '/email': (context) => EmailPage() }; return routes; } @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(builder: (context) => mainModel), ChangeNotifierProvider(builder: (context) => userModel), ChangeNotifierProvider(builder: (context) => productModel), ChangeNotifierProvider(builder: (context) => employeeModel), ChangeNotifierProvider(builder: (context) => poSubmissionModel), ChangeNotifierProvider(builder: (context) => doModel), ChangeNotifierProvider(builder: (context) => storageModel), ChangeNotifierProvider(builder: (context) => pdModel), ChangeNotifierProvider(builder: (context) => lanuguageModel), ChangeNotifierProvider(builder: (context) => regModel), ChangeNotifierProvider(builder: (context) => buyerModel), ChangeNotifierProvider(builder: (context) => notificationModel), ChangeNotifierProvider(builder: (context) => chartModel), ChangeNotifierProvider(builder: (context) => deliveryModel), ChangeNotifierProvider(builder: (context) => manualModel), ChangeNotifierProvider(builder: (context) => logModel), ChangeNotifierProvider(builder: (context) => deliveryModel), ChangeNotifierProvider(builder: (context) => phoneDeviceModel), ChangeNotifierProvider(builder: (context) => reportModel), ChangeNotifierProvider(builder: (context) => announcementModel), ChangeNotifierProvider(builder: (context) => reportUserModel), ChangeNotifierProvider(builder: (context) => pickUpModel), ChangeNotifierProvider(builder: (context) => shipmentRateModel), ChangeNotifierProvider(builder: (context) => shipmentModel), ChangeNotifierProvider(builder: (context) => packageModel), ChangeNotifierProvider(builder: (context) => invoiceModel), ChangeNotifierProvider( builder: (context) => testModel, ), ], child: Consumer( builder: (BuildContext context, LanguageModel value, Widget child) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Ok Energy', routes: route(context), theme: ThemeData(accentColor: Colors.black), localizationsDelegates: [ _newLocaleDelegate, //provides localised strings GlobalMaterialLocalizations.delegate, //provides RTL support GlobalWidgetsLocalizations.delegate, ], supportedLocales: Translation().supportedLocales()); }, ), ); } }