@ -3,9 +3,7 @@ import 'dart:typed_data';
import ' package:diplomaticquarterapp/config/config.dart ' ;
import ' package:diplomaticquarterapp/config/shared_pref_kay.dart ' ;
import ' package:diplomaticquarterapp/core/model/geofencing/requests/GeoZonesRequestModel.dart ' ;
import ' package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart ' ;
import ' package:diplomaticquarterapp/core/service/geofencing/GeofencingServices.dart ' ;
import ' package:diplomaticquarterapp/core/viewModels/project_view_model.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/authenticated_user.dart ' ;
import ' package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart ' ;
@ -18,11 +16,7 @@ import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import ' package:diplomaticquarterapp/services/authentication/auth_provider.dart ' ;
import ' package:diplomaticquarterapp/services/robo_search/event_provider.dart ' ;
import ' package:diplomaticquarterapp/uitl/CalendarUtils.dart ' ;
import ' package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart ' ;
import ' package:diplomaticquarterapp/uitl/HMG_Geofence.dart ' ;
import ' package:diplomaticquarterapp/uitl/LocalNotification.dart ' ;
import ' package:diplomaticquarterapp/uitl/PlatformBridge.dart ' ;
import ' package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart ' ;
import ' package:diplomaticquarterapp/uitl/translations_delegate_base.dart ' ;
import ' package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart ' ;
import ' package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart ' ;
@ -35,7 +29,7 @@ import 'package:flutter/material.dart';
import ' package:flutter_local_notifications/flutter_local_notifications.dart ' ;
import ' package:permission_handler/permission_handler.dart ' ;
import ' package:provider/provider.dart ' ;
import ' package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart ' ;
import ' ../../locator.dart ' ;
import ' ../../routes.dart ' ;
import ' home_page.dart ' ;
@ -52,9 +46,8 @@ class LandingPage extends StatefulWidget {
class _LandingPageState extends State < LandingPage > with WidgetsBindingObserver {
int currentTab = 0 ;
PageController pageController ;
ProjectViewModel project ViewModel ;
ProjectViewModel project Provider ;
var notificationCount = ' ' ;
var themeNotifier ;
/ / / inject the user data
AuthenticatedUserObject authenticatedUserObject =
@ -76,7 +69,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}
bool isPageNavigated = false ;
LocationUtils locationUtils ;
_changeCurrentTab ( int tab ) {
setState ( ( ) {
currentTab = tab ;
@ -98,7 +91,6 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
print ( " didChangeAppLifecycleState " ) ;
print ( ' state = $ state ' ) ;
AppGlobal . context = context ;
if ( state = = AppLifecycleState . resumed ) {
print ( LandingPage . isOpenCallPage ) ;
if ( LandingPage . isOpenCallPage ) {
@ -135,7 +127,6 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
@ override
void initState ( ) {
super . initState ( ) ;
WidgetsBinding . instance . addObserver ( this ) ;
/ / setState ( ( ) {
AppGlobal . context = context ;
@ -144,172 +135,136 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
pageController = PageController ( keepPage: true ) ;
_firebaseMessaging . setAutoInitEnabled ( true ) ;
/ / HMG ( Guest / Internet ) Wifi Access [ Zohaib Kambrani ]
HMGNetworkConnectivity ( context , ( ) {
GifLoaderDialogUtils . showMyDialog ( context ) ;
PlatformBridge ( ) . connectHMGGuestWifi ( ) . then ( ( value ) = > { GifLoaderDialogUtils . hideDialog ( context ) } ) ;
} ) . checkAndConnectIfNoInternet ( ) ;
if ( Platform . isIOS ) {
_firebaseMessaging . requestNotificationPermissions ( ) ;
}
/ / Flip Permission Checks [ Zohaib Kambrani ]
requestPermissions ( ) . then ( ( results ) {
if ( results [ Permission . locationAlways ] . isGranted | | results [ Permission . location ] . isGranted ) {
debugPrint ( " Fetching GEO ZONES from HMG service... " ) ;
locator < GeofencingServices > ( ) . getAllGeoZones ( GeoZonesRequestModel ( ) ) . then ( ( geoZones ) {
debugPrint ( " GEO ZONES saved to AppPreferences with key ' $ HMG_GEOFENCES ' " ) ;
debugPrint ( " Finished Fetching GEO ZONES from HMG service... " ) ;
projectViewModel . platformBridge ( ) . registerHmgGeofences ( ) ;
} ) ;
}
if ( results [ Permission . notification ] . isGranted )
_firebaseMessaging . getToken ( ) . then ( ( String token ) {
sharedPref . setString ( PUSH_TOKEN , token ) ;
if ( token ! = null & & DEVICE_TOKEN = = " " ) {
DEVICE_TOKEN = token ;
checkUserStatus ( token ) ;
}
} ) ;
if ( results [ Permission . storage ] . isGranted ) ;
if ( results [ Permission . camera ] . isGranted ) ;
if ( results [ Permission . photos ] . isGranted ) ;
if ( results [ Permission . accessMediaLocation ] . isGranted ) ;
if ( results [ Permission . calendar ] . isGranted ) ;
_firebaseMessaging . getToken ( ) . then ( ( String token ) async {
_firebaseMessaging . getToken ( ) . then ( ( String token ) {
sharedPref . setString ( PUSH_TOKEN , token ) ;
if ( token ! = null & & await sharedPref . getObject ( USER_PROFILE ) = = null ) {
if ( token ! = null & & DEVICE_TOKEN = = " " ) {
DEVICE_TOKEN = token ;
checkUserStatus ( token ) ;
} else if ( projectViewModel . isLogin ) {
getNotificationCount ( token ) ;
}
requestPermissions ( ) ;
} ) . catchError ( ( err ) {
print ( err ) ;
} ) ;
requestPermissions ( ) ;
/ / } ) ;
/ /
/ / / / _firebase Background message handler
Future . delayed ( Duration . zero , ( ) = > setTheme ( ) ) ;
/ / _firebase Background message handler
/ / _firebaseMessaging . configure (
/ / onMessage: ( Map < String , dynamic > message ) async {
/ / showDialog ( " onMessage: $ message " ) ;
/ / print ( " onMessage: $ message " ) ;
/ / print ( message ) ;
/ / print ( message [ ' name ' ] ) ;
/ / print ( message [ ' appointmentdate ' ] ) ;
/ /
/ / if ( Platform . isIOS ) {
/ / if ( message [ ' is_call ' ] = = " true " ) {
/ / var route = ModalRoute . of ( context ) ;
/ /
/ / if ( route ! = null ) {
/ / print ( route . settings . name ) ;
/ / }
/ /
/ / Map < String , dynamic > myMap = new Map < String , dynamic > . from ( message ) ;
/ / print ( myMap ) ;
/ / LandingPage . isOpenCallPage = true ;
/ / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / if ( ! isPageNavigated ) {
/ / isPageNavigated = true ;
/ / Navigator . push (
/ / context ,
/ / MaterialPageRoute (
/ / builder: ( context ) = > IncomingCall (
/ / incomingCallData: LandingPage . incomingCallData ) ) )
/ / . then ( ( value ) {
/ / isPageNavigated = false ;
/ / } ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found iOS " ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found iOS " ) ;
/ / }
/ /
/ / if ( Platform . isAndroid ) {
/ / if ( message [ ' data ' ] . containsKey ( " is_call " ) ) {
/ / var route = ModalRoute . of ( context ) ;
/ /
/ / if ( route ! = null ) {
/ / print ( route . settings . name ) ;
/ / }
/ /
/ / Map < String , dynamic > myMap =
/ / new Map < String , dynamic > . from ( message [ ' data ' ] ) ;
/ / print ( myMap ) ;
/ / LandingPage . isOpenCallPage = true ;
/ / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / if ( ! isPageNavigated ) {
/ / isPageNavigated = true ;
/ / Navigator . push (
/ / context ,
/ / MaterialPageRoute (
/ / builder: ( context ) = > IncomingCall (
/ / incomingCallData: LandingPage . incomingCallData ) ) )
/ / . then ( ( value ) {
/ / isPageNavigated = false ;
/ / } ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found Android " ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found Android " ) ;
/ / }
/ / } ,
/ / onBackgroundMessage: Platform . isIOS ? null : myBackgroundMessageHandler ,
/ / onLaunch: ( Map < String , dynamic > message ) async {
/ / print ( " onLaunch: $ message " ) ;
/ / showDialog ( " onLaunch: $ message " ) ;
/ / } ,
/ / onResume: ( Map < String , dynamic > message ) async {
/ / print ( " onResume: $ message " ) ;
/ / print ( message ) ;
/ / print ( message [ ' name ' ] ) ;
/ / print ( message [ ' appointmentdate ' ] ) ;
/ /
/ / showDialog ( " onResume: $ message " ) ;
/ /
/ / if ( Platform . isIOS ) {
/ / if ( message [ ' is_call ' ] = = " true " ) {
/ / var route = ModalRoute . of ( context ) ;
/ /
/ / if ( route ! = null ) {
/ / print ( route . settings . name ) ;
/ / }
/ /
/ / Map < String , dynamic > myMap =
/ / new Map < String , dynamic > . from ( message ) ;
/ / print ( myMap ) ;
/ / LandingPage . isOpenCallPage = true ;
/ / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / if ( ! isPageNavigated ) {
/ / isPageNavigated = true ;
/ / Navigator . push (
/ / context ,
/ / MaterialPageRoute (
/ / builder: ( context ) = > IncomingCall (
/ / incomingCallData: LandingPage . incomingCallData ) ) )
/ / . then ( ( value ) {
/ / isPageNavigated = false ;
/ / } ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found iOS " ) ;
/ / }
/ / } else {
/ / print ( " Is Call Not Found iOS " ) ;
/ / }
/ / } ,
/ / ) ;
/ / / / onMessage: ( Map < String , dynamic > message ) async {
/ / / / showDialog ( " onMessage: $ message " ) ;
/ / / / print ( " onMessage: $ message " ) ;
/ / / / print ( message ) ;
/ / / / print ( message [ ' name ' ] ) ;
/ / / / print ( message [ ' appointmentdate ' ] ) ;
/ / / /
/ / / / if ( Platform . isIOS ) {
/ / / / if ( message [ ' is_call ' ] = = " true " ) {
/ / / / var route = ModalRoute . of ( context ) ;
/ / / /
/ / / / if ( route ! = null ) {
/ / / / print ( route . settings . name ) ;
/ / / / }
/ / / /
/ / / / Map < String , dynamic > myMap = new Map < String , dynamic > . from ( message ) ;
/ / / / print ( myMap ) ;
/ / / / LandingPage . isOpenCallPage = true ;
/ / / / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / / / if ( ! isPageNavigated ) {
/ / / / isPageNavigated = true ;
/ / / / Navigator . push (
/ / / / context ,
/ / / / MaterialPageRoute (
/ / / / builder: ( context ) = > IncomingCall (
/ / / / incomingCallData: LandingPage . incomingCallData ) ) )
/ / / / . then ( ( value ) {
/ / / / isPageNavigated = false ;
/ / / / } ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found iOS " ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found iOS " ) ;
/ / / / }
/ / / /
/ / / / if ( Platform . isAndroid ) {
/ / / / if ( message [ ' data ' ] . containsKey ( " is_call " ) ) {
/ / / / var route = ModalRoute . of ( context ) ;
/ / / /
/ / / / if ( route ! = null ) {
/ / / / print ( route . settings . name ) ;
/ / / / }
/ / / /
/ / / / Map < String , dynamic > myMap =
/ / / / new Map < String , dynamic > . from ( message [ ' data ' ] ) ;
/ / / / print ( myMap ) ;
/ / / / LandingPage . isOpenCallPage = true ;
/ / / / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / / / if ( ! isPageNavigated ) {
/ / / / isPageNavigated = true ;
/ / / / Navigator . push (
/ / / / context ,
/ / / / MaterialPageRoute (
/ / / / builder: ( context ) = > IncomingCall (
/ / / / incomingCallData: LandingPage . incomingCallData ) ) )
/ / / / . then ( ( value ) {
/ / / / isPageNavigated = false ;
/ / / / } ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found Android " ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found Android " ) ;
/ / / / }
/ / / / } ,
/ / / / onBackgroundMessage: Platform . isIOS ? null : myBackgroundMessageHandler ,
/ / / / onLaunch: ( Map < String , dynamic > message ) async {
/ / / / print ( " onLaunch: $ message " ) ;
/ / / / showDialog ( " onLaunch: $ message " ) ;
/ / / / } ,
/ / / / onResume: ( Map < String , dynamic > message ) async {
/ / / / print ( " onResume: $ message " ) ;
/ / / / print ( message ) ;
/ / / / print ( message [ ' name ' ] ) ;
/ / / / print ( message [ ' appointmentdate ' ] ) ;
/ / / /
/ / / / showDialog ( " onResume: $ message " ) ;
/ / / /
/ / / / if ( Platform . isIOS ) {
/ / / / if ( message [ ' is_call ' ] = = " true " ) {
/ / / / var route = ModalRoute . of ( context ) ;
/ / / /
/ / / / if ( route ! = null ) {
/ / / / print ( route . settings . name ) ;
/ / / / }
/ / / /
/ / / / Map < String , dynamic > myMap =
/ / / / new Map < String , dynamic > . from ( message ) ;
/ / / / print ( myMap ) ;
/ / / / LandingPage . isOpenCallPage = true ;
/ / / / LandingPage . incomingCallData = IncomingCallData . fromJson ( myMap ) ;
/ / / / if ( ! isPageNavigated ) {
/ / / / isPageNavigated = true ;
/ / / / Navigator . push (
/ / / / context ,
/ / / / MaterialPageRoute (
/ / / / builder: ( context ) = > IncomingCall (
/ / / / incomingCallData: LandingPage . incomingCallData ) ) )
/ / / / . then ( ( value ) {
/ / / / isPageNavigated = false ;
/ / / / } ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found iOS " ) ;
/ / / / }
/ / / / } else {
/ / / / print ( " Is Call Not Found iOS " ) ;
/ / / / }
/ / / / } ,
/ / ) ;
}
showDialogs ( String message ) {
@ -379,9 +334,8 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
@ override
Widget build ( BuildContext context ) {
projectViewModel = Provider . of < ProjectViewModel > ( context ) ;
themeNotifier = Provider . of < ThemeNotifier > ( context ) ;
/ / setTheme ( ) ;
ProjectViewModel projectViewModel = Provider . of ( context ) ;
return Scaffold (
appBar: AppBar (
elevation: 0 ,
@ -425,7 +379,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
notificationCount ,
style: new TextStyle (
color: Colors . white ,
fontSize: projectViewModel . isArabic ? 8 : 9 ,
fontSize: projectViewModel . isArabic ? 8 : 9 ,
) ,
textAlign: TextAlign . center ,
) ,
@ -449,7 +403,9 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
SETTINGS ,
) ;
else
login ( ) ;
Navigator . of ( context ) . pushNamed (
WELCOME_LOGIN ,
) ;
} , / / do something ,
)
] ,
@ -469,7 +425,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
MedicalProfilePage ( ) ,
BookingOptions ( ) ,
MyFamily ( isAppbarVisible: false ) ,
ToDo ( isShowAppBar: false ) ,
ToDo ( ) ,
] , / / Please do not remove the BookingOptions from this array
) ,
bottomNavigationBar: BottomNavBar (
@ -504,14 +460,26 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
return TranslationBase . of ( context ) . bookAppo ;
}
}
void checkUserStatus ( token ) async {
/ / GifLoaderDialogUtils . showMyDialog ( context ) ;
authService
. selectDeviceImei ( token )
. then ( ( SelectDeviceIMEIRES value ) = > setUserValues ( value ) )
. catchError ( ( err ) {
/ / GifLoaderDialogUtils . hideDialog ( context ) ;
} ) ;
. then ( ( SelectDeviceIMEIRES value ) = > setUserValues ( value ) ) ;
if ( await sharedPref . getObject ( USER_PROFILE ) ! = null ) {
var data =
AuthenticatedUser . fromJson ( await sharedPref . getObject ( USER_PROFILE ) ) ;
if ( data ! = null ) {
authService
. registeredAuthenticatedUser ( data , token , 0 , 0 )
. then ( ( res ) = > { print ( res ) } ) ;
authService . getDashboard ( ) . then ( ( value ) = > {
setState ( ( ) {
notificationCount = value [ ' List_PatientDashboard ' ]
[ 0 ] [ ' UnreadPatientNotificationCount ' ] . toString ( ) ;
} )
} ) ;
}
}
}
static Future < dynamic > myBackgroundMessageHandler (
@ -531,8 +499,6 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}
void setUserValues ( value ) async {
/ / GifLoaderDialogUtils . hideDialog ( context ) ;
sharedPref . setObject ( IMEI_USER_DATA , value ) ;
}
@ -541,36 +507,4 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
_changeCurrentTab ( 2 ) ;
}
}
login ( ) async {
var data = await sharedPref . getObject ( IMEI_USER_DATA ) ;
sharedPref . remove ( REGISTER_DATA_FOR_LOGIIN ) ;
if ( data ! = null ) {
Navigator . of ( context ) . pushNamed ( CONFIRM_LOGIN ) ;
} else {
Navigator . of ( context ) . pushNamed (
WELCOME_LOGIN ,
) ;
}
}
getNotificationCount ( token ) async {
if ( await sharedPref . getObject ( USER_PROFILE ) ! = null ) {
var data =
AuthenticatedUser . fromJson ( await sharedPref . getObject ( USER_PROFILE ) ) ;
if ( data ! = null ) {
authService
. registeredAuthenticatedUser ( data , token , 0 , 0 )
. then ( ( res ) = > { print ( res ) } ) ;
authService . getDashboard ( ) . then ( ( value ) = > {
setState ( ( ) {
notificationCount = value [ ' List_PatientDashboard ' ] [ 0 ]
[ ' UnreadPatientNotificationCount ' ]
. toString ( ) ;
sharedPref . setString ( NOTIFICATION_COUNT , notificationCount ) ;
} )
} ) ;
}
}
}
}