Files
fcs/lib/app.dart
2020-09-12 03:34:52 +06:30

293 lines
12 KiB
Dart

import 'dart:io';
import 'package:fcs/fcs/common/helpers/theme.dart';
import 'package:fcs/fcs/common/localization/app_translations_delegate.dart';
import 'package:fcs/fcs/common/localization/transalation.dart';
import 'package:fcs/fcs/common/pages/contact/model/contact_model.dart';
import 'package:fcs/fcs/common/pages/customers/model/customer_model.dart';
import 'package:fcs/fcs/common/pages/faq/model/faq_model.dart';
import 'package:fcs/fcs/common/pages/initial_language_selection.dart';
import 'package:fcs/fcs/common/pages/model/language_model.dart';
import 'package:fcs/fcs/common/pages/signin/model/signin_model.dart';
import 'package:fcs/fcs/common/pages/term/model/term_model.dart';
import 'package:fcs/fcs/common/services/services.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/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:fcs/fcs/common/pages/model/main_model.dart' as fcs;
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/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';
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
final fcs.MainModel mainModel2 = new fcs.MainModel();
final ContactModel contactModel = new ContactModel();
final TermModel termModel = new TermModel();
final MainModel mainModel = new MainModel();
final FAQModel faqModel = new FAQModel();
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();
final SigninModel signinModel = new SigninModel();
AppTranslationsDelegate _newLocaleDelegate;
static FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
@override
void initState() {
super.initState();
mainModel2.init();
_newLocaleDelegate = AppTranslationsDelegate(newLocale: null);
Translation().onLocaleChanged = onLocaleChange;
mainModel
..addModel(userModel)
..addModel(employeeModel)
..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(discountModel);
this.mainModel.init();
_initLocalNotifications();
Services.instance.messagingService.init((message) {
print("Message from FCM:$message");
_showNotification(message);
});
}
_initLocalNotifications() {
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
_flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
static Future _showNotification(Map<String, dynamic> message) async {
var pushTitle;
var pushText;
var action;
if (Platform.isAndroid) {
var nodeData = message['notification'];
pushTitle = nodeData['title'];
pushText = nodeData['body'];
action = nodeData['action'];
} else {
pushTitle = message['title'];
pushText = message['body'];
action = message['action'];
}
print("AppPushs params pushTitle : $pushTitle");
print("AppPushs params pushText : $pushText");
print("AppPushs params pushAction : $action");
// @formatter:off
var platformChannelSpecificsAndroid = new AndroidNotificationDetails(
'your channel id', 'your channel name', 'your channel description',
playSound: true,
enableVibration: true,
importance: Importance.Max,
priority: Priority.High);
// @formatter:on
var platformChannelSpecificsIos =
new IOSNotificationDetails(presentSound: true);
var platformChannelSpecifics = new NotificationDetails(
platformChannelSpecificsAndroid, platformChannelSpecificsIos);
new Future.delayed(Duration.zero, () {
_flutterLocalNotificationsPlugin.show(
0,
pushTitle,
pushText,
platformChannelSpecifics,
payload: 'No_Sound',
);
});
}
void onLocaleChange(Locale locale) {
setState(() {
_newLocaleDelegate = AppTranslationsDelegate(newLocale: locale);
});
}
Map<String, WidgetBuilder> route(BuildContext context) {
final routes = <String, WidgetBuilder>{
'/': (_) => SplashScreen(),
'/welcome': (_) => WelcomePage(),
'/home': (_) => HomePage(),
'/term': (context) => Term(
agreePage: true,
),
'/login': (context) => LoginPage(),
'/email': (context) => EmailPage(),
'/language_selection': (context) => InitialLanguageSelectionPage(),
};
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.value(value: mainModel2),
ChangeNotifierProvider.value(value: contactModel),
ChangeNotifierProvider.value(value: termModel),
ChangeNotifierProvider.value(value: faqModel),
ChangeNotifierProvider.value(value: signinModel),
],
child: Consumer<LanguageModel>(
builder: (context, value, child) {
return CupertinoApp(
debugShowCheckedModeBanner: false,
title: 'FCS',
// theme: CupertinoThemeData(
// textTheme: CupertinoTextThemeData(
// navActionTextStyle: TextStyle(color: Colors.white),
// navTitleTextStyle: TextStyle(
// color: Colors.white,
// fontSize: value.isEng ? 20 : 18,
// fontWeight: FontWeight.w600),
// navLargeTitleTextStyle: TextStyle(
// color: Colors.white,
// fontSize: value.isEng ? 40 : 24,
// fontWeight: FontWeight.w600),
// primaryColor: primaryColor,
// textStyle: TextStyle(color: Colors.white),
// actionTextStyle: TextStyle(color: Colors.white),
// )),
routes: route(context),
localizationsDelegates: [
_newLocaleDelegate,
//provides localised strings
GlobalMaterialLocalizations.delegate,
//provides RTL support
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: Translation().supportedLocales());
},
));
}
}