import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart'; import 'package:fcs/model/buyer_model.dart'; import 'package:fcs/model/delivery_model.dart'; import 'package:fcs/model/discount_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/shipment_model.dart'; import 'package:fcs/model/storage_model.dart'; import 'package:fcs/model/test_model.dart'; import 'package:fcs/model_fcs/message_model.dart'; import 'package:fcs/model_fcs/package_model.dart'; import 'package:fcs/pages/email_page.dart'; import 'package:fcs/pages/login_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'model/announcement_model.dart'; import 'model/chart_model.dart'; import 'model/customer_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 'model_fcs/box_model.dart'; import 'fcs/common/pages/home_page.dart'; import 'fcs/common/pages/welcome_page.dart'; import 'fcs/common/pages/splash_page.dart'; import 'pages/term.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 BoxModel boxModel = new BoxModel(); final MessageModel messageModel = new MessageModel(); final InvoiceModel invoiceModel = new InvoiceModel(); final CustomerModel customerModel = new CustomerModel(); final DiscountModel discountModel = new DiscountModel(); 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(boxModel) ..addModel(messageModel) ..addModel(shipmentRateModel) ..addModel(invoiceModel) ..addModel(customerModel) ..addModel(discountModel); this.mainModel.init(); } void onLocaleChange(Locale locale) { setState(() { _newLocaleDelegate = AppTranslationsDelegate(newLocale: locale); }); } Map route(BuildContext context) { final routes = { '/': (_) => SplashScreen(), '/welcome': (_) => WelcomePage(), '/home': (_) => HomePage(), '/term': (context) => Term( agreePage: true, ), '/login': (context) => LoginPage(), '/email': (context) => EmailPage() }; return routes; } @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider.value(value: mainModel), ChangeNotifierProvider.value(value: userModel), ChangeNotifierProvider.value(value: productModel), ChangeNotifierProvider.value(value: employeeModel), ChangeNotifierProvider.value(value: poSubmissionModel), ChangeNotifierProvider.value(value: doModel), ChangeNotifierProvider.value(value: storageModel), ChangeNotifierProvider.value(value: pdModel), ChangeNotifierProvider.value(value: lanuguageModel), ChangeNotifierProvider.value(value: regModel), ChangeNotifierProvider.value(value: buyerModel), ChangeNotifierProvider.value(value: notificationModel), ChangeNotifierProvider.value(value: chartModel), ChangeNotifierProvider.value(value: deliveryModel), ChangeNotifierProvider.value(value: logModel), ChangeNotifierProvider.value(value: phoneDeviceModel), ChangeNotifierProvider.value(value: reportModel), ChangeNotifierProvider.value(value: announcementModel), ChangeNotifierProvider.value(value: reportUserModel), ChangeNotifierProvider.value(value: pickUpModel), ChangeNotifierProvider.value(value: shipmentRateModel), ChangeNotifierProvider.value(value: shipmentModel), ChangeNotifierProvider.value(value: packageModel), ChangeNotifierProvider.value(value: boxModel), ChangeNotifierProvider.value(value: messageModel), ChangeNotifierProvider.value(value: invoiceModel), ChangeNotifierProvider.value(value: customerModel), ChangeNotifierProvider.value(value: discountModel), ChangeNotifierProvider.value(value: testModel), ChangeNotifierProvider( create: (_) => SigninModel(), ), ], 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()); }, ), ); } }