add messaging

This commit is contained in:
Sai Naw Wun
2020-09-06 02:36:57 +06:30
parent 9a76a36883
commit 9423df2cd1
13 changed files with 224 additions and 58 deletions

View File

@@ -1,6 +1,9 @@
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/model/language_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';
@@ -17,6 +20,7 @@ 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_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;
@@ -82,6 +86,8 @@ class _AppState extends State<App> {
final DiscountModel discountModel = new DiscountModel();
AppTranslationsDelegate _newLocaleDelegate;
static FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
@override
void initState() {
@@ -121,6 +127,64 @@ class _AppState extends State<App> {
..addModel(customerModel)
..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) {
@@ -146,55 +210,50 @@ class _AppState extends State<App> {
@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),
],
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());
},
),
);
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),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'FCS',
routes: route(context),
theme: ThemeData(accentColor: Colors.black),
localizationsDelegates: [
_newLocaleDelegate,
//provides localised strings
GlobalMaterialLocalizations.delegate,
//provides RTL support
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: Translation().supportedLocales()));
}
}