Files
fcs/lib/app.dart
2020-06-01 14:48:29 +06:30

182 lines
7.0 KiB
Dart

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/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<App> {
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();
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);
this.mainModel.init();
}
void onLocaleChange(Locale locale) {
setState(() {
_newLocaleDelegate = AppTranslationsDelegate(newLocale: locale);
});
}
Map<String, WidgetBuilder> route(BuildContext context) {
final routes = <String, WidgetBuilder>{
'/': (_) => 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) => testModel,
),
],
child: Consumer<LanguageModel>(
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());
},
),
);
}
}