import 'dart:io'; 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/customer/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/market/model/market_model.dart'; import 'package:fcs/fcs/common/pages/model/language_model.dart'; import 'package:fcs/fcs/common/pages/model/main_model.dart' as fcs; import 'package:fcs/fcs/common/pages/package/model/package_model.dart'; import 'package:fcs/fcs/common/pages/package/model/shipment_model.dart'; import 'package:fcs/fcs/common/pages/payment_methods/model/payment_method_model.dart'; import 'package:fcs/fcs/common/pages/staff/model/staff_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/storage_model.dart'; import 'package:fcs/model/test_model.dart'; import 'package:fcs/model_fcs/message_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 'fcs/common/pages/home_page.dart'; import 'fcs/common/pages/splash_page.dart'; import 'fcs/common/pages/welcome_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/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 'pages/term.dart'; class App extends StatefulWidget { @override _AppState createState() => _AppState(); } class _AppState extends State { 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 PaymentMethodModel paymentMethodModel = new PaymentMethodModel(); final UserModel userModel = new UserModel(); final ProductModel productModel = new ProductModel(); 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 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 StaffModel staffModel = new StaffModel(); final ShipmentModel shipmentModel = new ShipmentModel(); final PackageModel packageModel = new PackageModel(); final MarketModel marketModel = new MarketModel(); AppTranslationsDelegate _newLocaleDelegate; static FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); @override void initState() { super.initState(); mainModel2 ..addModel(customerModel) ..addModel(staffModel) ..addModel(shipmentModel) ..addModel(packageModel) ..addModel(marketModel); mainModel2.init(); _newLocaleDelegate = AppTranslationsDelegate(newLocale: null); Translation().onLocaleChanged = onLocaleChange; mainModel ..addModel(userModel) ..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(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 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 route(BuildContext context) { final routes = { '/': (_) => 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: staffModel), 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: paymentMethodModel), ChangeNotifierProvider.value(value: marketModel), ], child: Consumer( 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()); }, )); } }