Compare commits

..

3 Commits

@ -1,4 +1,4 @@
'# diplomaticquarterapp # diplomaticquarterapp
A new Flutter application. A new Flutter application.

@ -56,6 +56,10 @@ android {
compileSdkVersion 34 compileSdkVersion 34
// ndkVersion "24.0.8215888" // ndkVersion "24.0.8215888"
buildFeatures {
viewBinding true
}
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
} }
@ -126,6 +130,7 @@ android {
compileOptions { compileOptions {
// coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
@ -136,13 +141,15 @@ flutter {
} }
dependencies { dependencies {
// coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.google.firebase:firebase-messaging:21.0.0" implementation "com.google.firebase:firebase-messaging:21.0.0"
// implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{ // implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{
// exclude group: 'com.google.protobuf',module: 'protobuf-javalite' // exclude group: 'com.google.protobuf',module: 'protobuf-javalite'
// exclude group: 'com.google.protobuf',module: 'protobuf-lite' // exclude group: 'com.google.protobuf',module: 'protobuf-lite'
// }) // })
implementation 'pub.devrel:easypermissions:3.0.0' implementation 'pub.devrel:easypermissions:0.4.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.guava:guava:27.0.1-android'
@ -163,11 +170,35 @@ dependencies {
// implementation "us.zoom.videosdk:ZoomVideoSDK:1.10.11" // implementation "us.zoom.videosdk:ZoomVideoSDK:1.10.11"
// implementation group: 'us.zoom.videosdk', name: 'zoomvideosdk-core', version: '1.10.11' // implementation group: 'us.zoom.videosdk', name: 'zoomvideosdk-core', version: '1.10.11'
implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1" // implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1"
implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1" // implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1" // implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
// implementation "org.jetbrains.anko:anko-commons:0.10.4" implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-java8:2.4.0'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'com.google.android.gms:play-services-location:21.3.0'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'androidx.test.ext:junit:1.1.5'
implementation 'com.android.volley:volley:1.2.1'
def room_version = "2.4.0-alpha04"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation 'net.zetetic:android-database-sqlcipher:4.5.2'
implementation 'com.intuit.ssp:ssp-android:1.1.0'
implementation 'com.intuit.sdp:sdp-android:1.1.0'
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation "com.mapbox.maps:android:10.16.6"
implementation files('libs/PenNavUI.aar')
implementation files('libs/Penguin.aar')
implementation files('libs/PenguinRenderer.aar')
implementation "org.jetbrains.anko:anko-commons:0.10.4"
implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM
implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0' implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android
@ -177,6 +208,7 @@ dependencies {
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1' implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
implementation 'androidx.core:core-ktx:1.6.0' implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.9.0'
androidTestImplementation "androidx.test:core:1.4.0" androidTestImplementation "androidx.test:core:1.4.0"
} }

Binary file not shown.

Binary file not shown.

@ -54,3 +54,19 @@
-dontwarn com.opentok.android.** -dontwarn com.opentok.android.**
-dontwarn com.opentok.otc.** -dontwarn com.opentok.otc.**
-dontwarn penguin.com.pennav.Model.Navigation.NearLandmark
-keep,includedescriptorclasses class net.sqlcipher.** { *; }
-keep,includedescriptorclasses interface net.sqlcipher.** { *; }
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-dontwarn retrofit2.**
-keep class com.google.gson.** { *; }
-dontwarn com.google.gson.**
# Penguin classes
-keep class com.peng.pennavmap.models.** { *; }
-keep class com.peng.pennavmap.db.** { *; }

@ -8,21 +8,36 @@
FlutterApplication and put your custom class here. --> FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" tools:node="remove"/> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/> <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
<uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove"/> <!-- <uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove"/>-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" tools:node="remove"/> <!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" tools:node="remove"/>-->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/> <!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/>-->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" tools:node="remove"/> <!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" tools:node="remove"/>-->
<uses-permission android:name="android.permission.BROADCAST_STICKY" tools:node="remove"/> <uses-permission android:name="android.permission.BROADCAST_STICKY" tools:node="remove"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/> <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" tools:node="remove"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" tools:node="remove"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" tools:node="remove"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" tools:node="remove"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" tools:node="remove"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" tools:node="remove"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove" />
<!-- <uses-permission android:name="android.permission.INTERNET" />-->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@ -42,6 +57,7 @@
<uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/> <uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/>
<!-- <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />-->
@ -65,7 +81,7 @@
android:screenOrientation="sensorPortrait" android:screenOrientation="sensorPortrait"
android:allowBackup="false" android:allowBackup="false"
android:extractNativeLibs="true" android:extractNativeLibs="true"
tools:replace="android:extractNativeLibs" tools:replace="android:extractNativeLibs,android:label"
android:label="Dr. Alhabib"> android:label="Dr. Alhabib">
<meta-data android:name="push_kit_auto_init_enabled" android:value="true" /> <meta-data android:name="push_kit_auto_init_enabled" android:value="true" />

@ -1,21 +1,19 @@
package com.ejada.hmg package com.ejada.hmg
import android.app.NotificationChannel import android.content.Intent
import android.app.NotificationManager import android.content.pm.PackageManager
import android.content.ContentResolver
import android.media.AudioAttributes
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.os.Build import android.os.Build
import android.util.Log
import android.view.WindowManager import android.view.WindowManager
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.PenguinInPlatformBridge
import com.ejada.hmg.utils.* import com.ejada.hmg.utils.*
import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterFragmentActivity() { class MainActivity: FlutterFragmentActivity() {
@RequiresApi(Build.VERSION_CODES.O)
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine); GeneratedPluginRegistrant.registerWith(flutterEngine);
// Create Flutter Platform Bridge // Create Flutter Platform Bridge
@ -23,6 +21,7 @@ class MainActivity: FlutterFragmentActivity() {
PlatformBridge(flutterEngine, this).create() PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create() OpenTokPlatformBridge(flutterEngine, this).create()
PenguinInPlatformBridge(flutterEngine, this).create()
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// val mChannel = NotificationChannel("video_call_noti", "video call", NotificationManager.IMPORTANCE_HIGH) // val mChannel = NotificationChannel("video_call_noti", "video call", NotificationManager.IMPORTANCE_HIGH)
@ -43,6 +42,25 @@ class MainActivity: FlutterFragmentActivity() {
// val time = timeToMillis("04:00:00", "HH:mm:ss") // val time = timeToMillis("04:00:00", "HH:mm:ss")
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val granted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
val intent = Intent("PERMISSION_RESULT_ACTION").apply {
putExtra("PERMISSION_GRANTED", granted)
}
sendBroadcast(intent)
// Log the request code and permission results
Log.d("PermissionsResult", "Request Code: $requestCode")
Log.d("PermissionsResult", "Permissions: ${permissions.joinToString()}")
Log.d("PermissionsResult", "Grant Results: ${grantResults.joinToString()}")
} }
override fun onResume() { override fun onResume() {

@ -0,0 +1,51 @@
package com.cloud.diplomaticquarterapp
import com.ejada.hmg.MainActivity
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.penguin.PenguinView
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
class PenguinInPlatformBridge(
private var flutterEngine: FlutterEngine,
private var mainActivity: MainActivity
) {
private lateinit var channel: MethodChannel
companion object {
private const val CHANNEL = "launch_penguin_ui"
}
@RequiresApi(Build.VERSION_CODES.O)
fun create() {
// openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) {
"launchPenguin" -> {
print("the platform channel is being called")
val args = call.arguments as Map<String, Any>?
Log.d("TAG", "configureFlutterEngine: $args")
println("args")
args?.let {
PenguinView(
mainActivity,
100,
args,
flutterEngine.dartExecutor.binaryMessenger,
activity = mainActivity,
)
}
}
else -> {
result.notImplemented()
}
}
}
}
}

@ -0,0 +1,21 @@
package com.cloud.diplomaticquarterapp.PermissionManager
import android.Manifest
object PermissionHelper {
fun getRequiredPermissions(): Array<String> {
return arrayOf(
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT,
Manifest.permission.HIGH_SAMPLING_RATE_SENSORS,
// Manifest.permission.ACTIVITY_RECOGNITION
)
}
}

@ -0,0 +1,50 @@
package com.cloud.diplomaticquarterapp.PermissionManager
import android.app.Activity
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class PermissionManager(
private val context: Context,
val listener: PermissionListener,
private val requestCode: Int,
vararg permissions: String
) {
private val permissionsArray = permissions
interface PermissionListener {
fun onPermissionGranted()
fun onPermissionDenied()
}
fun arePermissionsGranted(): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permissionsArray.all {
ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
} else {
true
}
}
fun requestPermissions(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ActivityCompat.requestPermissions(activity, permissionsArray, requestCode)
}
}
fun handlePermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if (this.requestCode == requestCode) {
val allGranted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
if (allGranted) {
listener.onPermissionGranted()
} else {
listener.onPermissionDenied()
}
}
}
}

@ -0,0 +1,15 @@
package com.cloud.diplomaticquarterapp.PermissionManager
// PermissionResultReceiver.kt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
class PermissionResultReceiver(
private val callback: (Boolean) -> Unit
) : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val granted = intent?.getBooleanExtra("PERMISSION_GRANTED", false) ?: false
callback(granted)
}
}

@ -0,0 +1,261 @@
package com.cloud.diplomaticquarterapp.penguin
import android.app.Activity
import android.content.Context
import android.content.Context.RECEIVER_EXPORTED
import android.content.IntentFilter
import android.graphics.Color
import android.os.Build
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionHelper
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionManager
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionResultReceiver
import com.ejada.hmg.MainActivity
import com.peng.pennavmap.PlugAndPlayConfiguration
import com.peng.pennavmap.PlugAndPlaySDK
import com.peng.pennavmap.enums.InitializationErrorType
import com.peng.pennavmap.interfaces.PenNavUIDelegate
import com.peng.pennavmap.utils.Languages
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.platform.PlatformView
/**
* Custom PlatformView for displaying Penguin UI components within a Flutter app.
* Implements `PlatformView` for rendering the view, `MethodChannel.MethodCallHandler` for handling method calls,
* and `PenNavUIDelegate` for handling SDK events.
*/
@RequiresApi(Build.VERSION_CODES.O)
internal class PenguinView(
context: Context,
id: Int,
val creationParams: Map<String, Any>,
messenger: BinaryMessenger,
activity: MainActivity
) : PlatformView, MethodChannel.MethodCallHandler, PenNavUIDelegate {
// The layout for displaying the Penguin UI
private val mapLayout: RelativeLayout = RelativeLayout(context)
private val _context: Context = context
private val permissionResultReceiver: PermissionResultReceiver
private val permissionIntentFilter = IntentFilter("PERMISSION_RESULT_ACTION")
private companion object {
const val PERMISSIONS_REQUEST_CODE = 1
}
private lateinit var permissionManager: PermissionManager
// Reference to the main activity
private var _activity: Activity = activity
private lateinit var mContext: Context
init {
// Set layout parameters for the mapLayout
mapLayout.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
)
mContext = context
permissionResultReceiver = PermissionResultReceiver { granted ->
if (granted) {
onPermissionsGranted()
} else {
onPermissionsDenied()
}
}
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
mContext.registerReceiver(
permissionResultReceiver,
permissionIntentFilter,
RECEIVER_EXPORTED
)
}else{
mContext.registerReceiver(
permissionResultReceiver,
permissionIntentFilter,
)
}
// Set the background color of the layout
mapLayout.setBackgroundColor(Color.RED)
permissionManager = PermissionManager(
context = mContext,
listener = object : PermissionManager.PermissionListener {
override fun onPermissionGranted() {
// Handle permissions granted
onPermissionsGranted()
}
override fun onPermissionDenied() {
// Handle permissions denied
onPermissionsDenied()
}
},
requestCode = PERMISSIONS_REQUEST_CODE,
*PermissionHelper.getRequiredPermissions()
)
if (!permissionManager.arePermissionsGranted()) {
permissionManager.requestPermissions(_activity)
} else {
// Permissions already granted
permissionManager.listener.onPermissionGranted()
}
}
private fun onPermissionsGranted() {
// Handle the actions when permissions are granted
Log.d("PermissionsResult", "onPermissionsGranted")
// Register the platform view factory for creating custom views
// Initialize the Penguin SDK
initPenguin()
}
private fun onPermissionsDenied() {
// Handle the actions when permissions are denied
Log.d("PermissionsResult", "onPermissionsDenied")
}
/**
* Returns the view associated with this PlatformView.
*
* @return The main view for this PlatformView.
*/
override fun getView(): View {
return mapLayout
}
/**
* Cleans up resources associated with this PlatformView.
*/
override fun dispose() {
// Cleanup code if needed
}
/**
* Handles method calls from Dart code.
*
* @param call The method call from Dart.
* @param result The result callback to send responses back to Dart.
*/
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
// Handle method calls from Dart code here
}
/**
* Initializes the Penguin SDK with custom configuration and delegates.
*/
private fun initPenguin() {
// Configure the PlugAndPlaySDK
val language = when (creationParams["languageCode"] as String) {
"ar" -> Languages.ar
"en" -> Languages.en
else -> {
Languages.en
}
}
Log.d(
"TAG",
"initPenguin: ${Languages.getLanguageEnum(creationParams["languageCode"] as String)}"
)
PlugAndPlaySDK.configuration = PlugAndPlayConfiguration.Builder()
.setBaseUrl(
creationParams["baseURL"] as String,
creationParams["positionURL"] as String
)
.setServiceName(
creationParams["dataServiceName"] as String,
creationParams["positionServiceName"] as String
)
.setClientData(
creationParams["clientID"] as String,
creationParams["clientKey"] as String
)
.setUserName(creationParams["username"] as String)
// .setLanguageID(Languages.en)
.setLanguageID(language)
.setSimulationModeEnabled(creationParams["isSimulationModeEnabled"] as Boolean)
.setEnableBackButton(true)
.setDeepLinkData("deeplink")
.setCustomizeColor("#2CA0AF")
.setDeepLinkSchema("")
.build()
// Set location delegate to handle location updates
PlugAndPlaySDK.setPiLocationDelegate {
// Example code to handle location updates
// Uncomment and modify as needed
// if (location.size() > 0)
// Toast.makeText(_context, "Location Info Latitude: ${location[0]}, Longitude: ${location[1]}", Toast.LENGTH_SHORT).show()
}
// Set events delegate for reporting issues
PlugAndPlaySDK.setPiEventsDelegate { }
// Start the Penguin SDK
PlugAndPlaySDK.start(mContext, this)
}
/**
* Called when Penguin UI setup is successful.
*
* @param warningCode Optional warning code received from the SDK.
*/
override fun onPenNavSuccess(warningCode: String?) {
// if (_context is Activity) {
// _context.runOnUiThread {
// Toast.makeText(_context, "Success Info: $warningCode", Toast.LENGTH_SHORT).show()
// }
// } else {
// println("the warming is presented $$warningCode")
//// val handler = Handler(Looper.getMainLooper())
//// handler.post {
//// Toast.makeText(_context, "Success Info: $warningCode", Toast.LENGTH_SHORT).show()
//// }
// }
}
/**
* Called when there is an initialization error with Penguin UI.
*
* @param description Description of the error.
* @param errorType Type of initialization error.
*/
override fun onPenNavInitializationError(
description: String?,
errorType: InitializationErrorType?
) {
Toast.makeText(mContext, "Navigation Error: $description", Toast.LENGTH_SHORT).show()
}
/**
* Called when Penguin UI is dismissed.
*/
override fun onPenNavUIDismiss() {
// Handle UI dismissal if needed
try {
mContext.unregisterReceiver(permissionResultReceiver)
dispose();
} catch (e: IllegalArgumentException) {
Log.e("PenguinView", "Receiver not registered: $e")
}
}
}

@ -22,6 +22,7 @@ import com.github.kittinunf.fuel.httpPost
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
import org.jetbrains.anko.doAsyncResult
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
@ -207,6 +208,7 @@ fun <T>httpPost(url: String, body: Map<String, Any?>, onSuccess: (response: HTTP
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.header("Allow", "*/*") .header("Allow", "*/*")
.response { request, response, result -> .response { request, response, result ->
result.doAsyncResult { }
result.fold({ data -> result.fold({ data ->
val dataString = String(data) val dataString = String(data)
if (isJSONValid(dataString)) { if (isJSONValid(dataString)) {

@ -19,4 +19,5 @@
<string name="GEOFENCE_REQUEST_TOO_FREQUENT"> <string name="GEOFENCE_REQUEST_TOO_FREQUENT">
Geofence requests happened too frequently. Geofence requests happened too frequently.
</string> </string>
<string name="mapbox_access_token" translatable="false">sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg</string>
</resources> </resources>

@ -11,9 +11,22 @@ buildscript {
repositories { repositories {
google() google()
// jcenter() jcenter()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' } maven { url 'https://developer.huawei.com/repo/' }
maven {
url 'https://api.mapbox.com/downloads/v2/releases/maven'
credentials {
username = 'mapbox'
password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
if (password == null || password == "") {
throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
}
}
authentication {
basic(BasicAuthentication)
}
}
// maven { // maven {
// url "https://dl.bintray.com/kotlin/kotlin-eap/" // url "https://dl.bintray.com/kotlin/kotlin-eap/"
@ -27,6 +40,7 @@ buildscript {
// classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' // classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
classpath 'com.huawei.agconnect:agcp:1.5.2.300' classpath 'com.huawei.agconnect:agcp:1.5.2.300'
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
classpath "com.mapbox.gradle.plugins:access-token:0.4.0"
} }
} }
@ -35,14 +49,28 @@ allprojects {
google() google()
// jcenter() // jcenter()
mavenCentral() mavenCentral()
flatDir {
dirs 'libs'
}
maven { maven {
url 'https://developer.huawei.com/repo/' url 'https://developer.huawei.com/repo/'
} }
maven { maven {
url 'https://mvnrepository.com/artifact/' url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
} }
maven { maven {
url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local" url 'https://api.mapbox.com/downloads/v2/releases/maven'
credentials {
username = 'mapbox'
password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
if (password == null || password == "") {
throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
}
}
authentication {
basic(BasicAuthentication)
}
} }
} }
} }

@ -3,3 +3,5 @@ org.gradle.jvmargs=-Xmx4096m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
android.suppressUnsupportedCompileSdk=33 android.suppressUnsupportedCompileSdk=33
MAPBOX_USER_NAME = "mapbox"
MAPBOX_DOWNLOADS_TOKEN="sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"

@ -1,7 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="21.035" height="25.699" viewBox="0 0 21.035 25.699"> <svg xmlns="http://www.w3.org/2000/svg" width="21.035" height="25.699" viewBox="0 0 21.035 25.699">
<g id="file_4_" data-name="file (4)" transform="translate(0 0)"> <g id="file_4_" data-name="file (4)" transform="translate(0 0)">
<path id="Path_4376" data-name="Path 4376" d="M199.117,108.4h.751v18.461a2.228,2.228,0,0,0,2.225,2.225h13.668v.684a1.42,1.42,0,0,1-1.42,1.42H199.12a1.42,1.42,0,0,1-1.42-1.42V109.82A1.418,1.418,0,0,1,199.117,108.4Z" transform="translate(-197.7 -105.491)" fill="#00000"/> <path id="Path_4376" data-name="Path 4376" d="M199.117,108.4h.751v18.461a2.228,2.228,0,0,0,2.225,2.225h13.668v.684a1.42,1.42,0,0,1-1.42,1.42H199.12a1.42,1.42,0,0,1-1.42-1.42V109.82A1.418,1.418,0,0,1,199.117,108.4Z" transform="translate(-197.7 -105.491)" fill="#989898"/>
<path id="Path_4377" data-name="Path 4377" d="M95.931,22.79H88.32a1.42,1.42,0,0,1-1.42-1.42V1.42A1.42,1.42,0,0,1,88.32,0H98.462V.47a1.378,1.378,0,0,0-.008.15V4.509a2,2,0,0,0,2,2h3.889c.04,0,.083,0,.123-.005h.494V21.371a1.42,1.42,0,0,1-1.42,1.42H95.931Zm-.287-4.825h4.962a.671.671,0,0,0,0-1.342H95.641a.671.671,0,1,0,0,1.342Zm-4.965-3.424h9.927a.671.671,0,0,0,0-1.342H90.679a.671.671,0,0,0,0,1.342Zm9.927-4.978H90.679a.671.671,0,0,0,0,1.342h9.927a.671.671,0,0,0,0-1.342Z" transform="translate(-83.924 0)" fill="#00000"/> <path id="Path_4377" data-name="Path 4377" d="M95.931,22.79H88.32a1.42,1.42,0,0,1-1.42-1.42V1.42A1.42,1.42,0,0,1,88.32,0H98.462V.47a1.378,1.378,0,0,0-.008.15V4.509a2,2,0,0,0,2,2h3.889c.04,0,.083,0,.123-.005h.494V21.371a1.42,1.42,0,0,1-1.42,1.42H95.931Zm-.287-4.825h4.962a.671.671,0,0,0,0-1.342H95.641a.671.671,0,1,0,0,1.342Zm-4.965-3.424h9.927a.671.671,0,0,0,0-1.342H90.679a.671.671,0,0,0,0,1.342Zm9.927-4.978H90.679a.671.671,0,0,0,0,1.342h9.927a.671.671,0,0,0,0-1.342Z" transform="translate(-83.924 0)" fill="#989898"/>
<path id="Path_4378" data-name="Path 4378" d="M92.626,6.481h-3.9A1.191,1.191,0,0,1,87.546,5.3V1.4a.6.6,0,0,1,.6-.6.582.582,0,0,1,.419.177L93.05,5.462A.6.6,0,0,1,92.626,6.481Z" transform="translate(-72.209 -0.779)" fill="#00000"/> <path id="Path_4378" data-name="Path 4378" d="M92.626,6.481h-3.9A1.191,1.191,0,0,1,87.546,5.3V1.4a.6.6,0,0,1,.6-.6.582.582,0,0,1,.419.177L93.05,5.462A.6.6,0,0,1,92.626,6.481Z" transform="translate(-72.209 -0.779)" fill="#989898"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@ -33,6 +33,7 @@ target 'Runner' do
pod 'OpenTok', '~> 2.22.0' pod 'OpenTok', '~> 2.22.0'
pod 'VTO2Lib' pod 'VTO2Lib'
pod 'MapboxMaps', '10.16.4'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end end
@ -54,6 +55,7 @@ post_install do |installer|
] ]
build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386'
build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
build_configuration.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
xcconfig_path = build_configuration.base_configuration_reference.real_path xcconfig_path = build_configuration.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path) xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR") xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")

@ -13,13 +13,24 @@
306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */; }; 306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */; };
306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6CA271D8B73002D6EFC /* OpenTok.swift */; }; 306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306FE6CA271D8B73002D6EFC /* OpenTok.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
4EE411B2E3CB5D4F81AE5078 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1513E0724DAFB89C198BDD /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
762D738E274E42650063CE73 /* ring_30Sec.caf in Resources */ = {isa = PBXBuildFile; fileRef = 762D738C274E42650063CE73 /* ring_30Sec.caf */; }; 762D738E274E42650063CE73 /* ring_30Sec.caf in Resources */ = {isa = PBXBuildFile; fileRef = 762D738C274E42650063CE73 /* ring_30Sec.caf */; };
762D738F274E42650063CE73 /* ring_30Sec.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 762D738D274E42650063CE73 /* ring_30Sec.mp3 */; }; 762D738F274E42650063CE73 /* ring_30Sec.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 762D738D274E42650063CE73 /* ring_30Sec.mp3 */; };
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76815B26275F381C00E66E94 /* HealthKit.framework */; }; 76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76815B26275F381C00E66E94 /* HealthKit.framework */; };
768D81752C6DF6EC005C655F /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816B2C6DF6E3005C655F /* Penguin.xcframework */; };
768D81762C6DF6EC005C655F /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816B2C6DF6E3005C655F /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
768D81772C6DF6EE005C655F /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816C2C6DF6E3005C655F /* PenguinINRenderer.xcframework */; };
768D81782C6DF6EE005C655F /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816C2C6DF6E3005C655F /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
768D81792C6DF6F1005C655F /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816D2C6DF6E3005C655F /* PenNavUI.xcframework */; };
768D817A2C6DF6F1005C655F /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 768D816D2C6DF6E3005C655F /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
76962ECE28AE5C10004EAE09 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */; }; 76962ECE28AE5C10004EAE09 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */; };
76D71B672C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */; };
76D71B6A2C6B819000DAFB84 /* PenguinModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B692C6B819000DAFB84 /* PenguinModel.swift */; };
76D71B6C2C6B81B300DAFB84 /* PenguinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */; };
76D71B6E2C6B81CC00DAFB84 /* PenguinPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */; };
76D71B702C6B81EA00DAFB84 /* PenguinViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */; };
76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76F2556027F1FFED0062C1CD /* PassKit.framework */; }; 76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76F2556027F1FFED0062C1CD /* PassKit.framework */; };
76F9B0E22C6DED310064C51B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 13E5B711BC29EB6ECCE1964C /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@ -43,12 +54,15 @@
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = { 768D81742C6DF6E4005C655F /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase; isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
768D81762C6DF6EC005C655F /* Penguin.xcframework in Embed Frameworks */,
768D81782C6DF6EE005C655F /* PenguinINRenderer.xcframework in Embed Frameworks */,
768D817A2C6DF6F1005C655F /* PenNavUI.xcframework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -56,6 +70,7 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
13E5B711BC29EB6ECCE1964C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
301C79AD27200D9F0016307B /* OpenTokRemoteVideoFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokRemoteVideoFactory.swift; sourceTree = "<group>"; }; 301C79AD27200D9F0016307B /* OpenTokRemoteVideoFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokRemoteVideoFactory.swift; sourceTree = "<group>"; };
@ -63,7 +78,6 @@
306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokPlatformBridge.swift; sourceTree = "<group>"; }; 306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTokPlatformBridge.swift; sourceTree = "<group>"; };
306FE6CA271D8B73002D6EFC /* OpenTok.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTok.swift; sourceTree = "<group>"; }; 306FE6CA271D8B73002D6EFC /* OpenTok.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenTok.swift; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3D1513E0724DAFB89C198BDD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6EE8819867EC2775AB578377 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; 6EE8819867EC2775AB578377 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
@ -73,7 +87,15 @@
7643E4052BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = "<group>"; }; 7643E4052BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = "<group>"; };
7643E4062BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LaunchScreen.strings; sourceTree = "<group>"; }; 7643E4062BE0D0B400BD2F25 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/LaunchScreen.strings; sourceTree = "<group>"; };
76815B26275F381C00E66E94 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; }; 76815B26275F381C00E66E94 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; };
768D816B2C6DF6E3005C655F /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = "<group>"; };
768D816C2C6DF6E3005C655F /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = "<group>"; };
768D816D2C6DF6E3005C655F /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = "<group>"; };
76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; }; 76962ECD28AE5C10004EAE09 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPenguinInPlatformBridge.swift; sourceTree = "<group>"; };
76D71B692C6B819000DAFB84 /* PenguinModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinModel.swift; sourceTree = "<group>"; };
76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinView.swift; sourceTree = "<group>"; };
76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinPlugin.swift; sourceTree = "<group>"; };
76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinViewFactory.swift; sourceTree = "<group>"; };
76F2556027F1FFED0062C1CD /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; }; 76F2556027F1FFED0062C1CD /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
838788A2BEDC4910F4B029A6 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; 838788A2BEDC4910F4B029A6 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
@ -110,10 +132,13 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
76F9B0E22C6DED310064C51B /* Pods_Runner.framework in Frameworks */,
76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */, 76F2556127F1FFED0062C1CD /* PassKit.framework in Frameworks */,
76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */, 76815B27275F381C00E66E94 /* HealthKit.framework in Frameworks */,
E9620805255C2ED100D3A35D /* NetworkExtension.framework in Frameworks */, E9620805255C2ED100D3A35D /* NetworkExtension.framework in Frameworks */,
4EE411B2E3CB5D4F81AE5078 /* Pods_Runner.framework in Frameworks */, 768D81792C6DF6F1005C655F /* PenNavUI.xcframework in Frameworks */,
768D81752C6DF6EC005C655F /* Penguin.xcframework in Frameworks */,
768D81772C6DF6EE005C655F /* PenguinINRenderer.xcframework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -133,10 +158,13 @@
555EAAA626EFB641859EF0BE /* Frameworks */ = { 555EAAA626EFB641859EF0BE /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
768D816B2C6DF6E3005C655F /* Penguin.xcframework */,
768D816C2C6DF6E3005C655F /* PenguinINRenderer.xcframework */,
768D816D2C6DF6E3005C655F /* PenNavUI.xcframework */,
76F2556027F1FFED0062C1CD /* PassKit.framework */, 76F2556027F1FFED0062C1CD /* PassKit.framework */,
76815B26275F381C00E66E94 /* HealthKit.framework */, 76815B26275F381C00E66E94 /* HealthKit.framework */,
E9620804255C2ED100D3A35D /* NetworkExtension.framework */, E9620804255C2ED100D3A35D /* NetworkExtension.framework */,
3D1513E0724DAFB89C198BDD /* Pods_Runner.framework */, 13E5B711BC29EB6ECCE1964C /* Pods_Runner.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@ -151,6 +179,17 @@
path = Pods; path = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
76D71B682C6B817500DAFB84 /* Penguin */ = {
isa = PBXGroup;
children = (
76D71B692C6B819000DAFB84 /* PenguinModel.swift */,
76D71B6B2C6B81B300DAFB84 /* PenguinView.swift */,
76D71B6D2C6B81CC00DAFB84 /* PenguinPlugin.swift */,
76D71B6F2C6B81EA00DAFB84 /* PenguinViewFactory.swift */,
);
path = Penguin;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = { 9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -186,6 +225,7 @@
97C146F01CF9000F007C117D /* Runner */ = { 97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
76D71B682C6B817500DAFB84 /* Penguin */,
762D738C274E42650063CE73 /* ring_30Sec.caf */, 762D738C274E42650063CE73 /* ring_30Sec.caf */,
762D738D274E42650063CE73 /* ring_30Sec.mp3 */, 762D738D274E42650063CE73 /* ring_30Sec.mp3 */,
306FE6C9271D8B54002D6EFC /* OpenTok */, 306FE6C9271D8B54002D6EFC /* OpenTok */,
@ -220,6 +260,7 @@
E923EFD52587443800E3E751 /* HMGPlatformBridge.swift */, E923EFD52587443800E3E751 /* HMGPlatformBridge.swift */,
306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */, 306FE6C7271D790C002D6EFC /* OpenTokPlatformBridge.swift */,
E9F7623A25922BCE00FB5CCF /* FlutterConstants.swift */, E9F7623A25922BCE00FB5CCF /* FlutterConstants.swift */,
76D71B662C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift */,
); );
path = Helper; path = Helper;
sourceTree = "<group>"; sourceTree = "<group>";
@ -254,7 +295,7 @@
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 768D81742C6DF6E4005C655F /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
487FDD6493EB9AE7D8E39485 /* [CP] Embed Pods Frameworks */, 487FDD6493EB9AE7D8E39485 /* [CP] Embed Pods Frameworks */,
4671D3CD126F6635F4B75A6E /* [CP] Copy Pods Resources */, 4671D3CD126F6635F4B75A6E /* [CP] Copy Pods Resources */,
@ -419,12 +460,17 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */, 306FE6C8271D790C002D6EFC /* OpenTokPlatformBridge.swift in Sources */,
76D71B6E2C6B81CC00DAFB84 /* PenguinPlugin.swift in Sources */,
E923EFD225863FDF00E3E751 /* GeoZoneModel.swift in Sources */, E923EFD225863FDF00E3E751 /* GeoZoneModel.swift in Sources */,
E91B539A256AAA6500E96549 /* MainFlutterVC.swift in Sources */, E91B539A256AAA6500E96549 /* MainFlutterVC.swift in Sources */,
76D71B672C6B7F9C00DAFB84 /* HMGPenguinInPlatformBridge.swift in Sources */,
E91B539C256AAA6500E96549 /* HMG_GUEST_bkp.swift in Sources */, E91B539C256AAA6500E96549 /* HMG_GUEST_bkp.swift in Sources */,
E91B5396256AAA6500E96549 /* GlobalHelper.swift in Sources */, E91B5396256AAA6500E96549 /* GlobalHelper.swift in Sources */,
E923EFD4258645C100E3E751 /* HMG_Geofence.swift in Sources */, E923EFD4258645C100E3E751 /* HMG_Geofence.swift in Sources */,
E923EFD62587443800E3E751 /* HMGPlatformBridge.swift in Sources */, E923EFD62587443800E3E751 /* HMGPlatformBridge.swift in Sources */,
76D71B6C2C6B81B300DAFB84 /* PenguinView.swift in Sources */,
76D71B6A2C6B819000DAFB84 /* PenguinModel.swift in Sources */,
76D71B702C6B81EA00DAFB84 /* PenguinViewFactory.swift in Sources */,
301C79AE27200D9F0016307B /* OpenTokRemoteVideoFactory.swift in Sources */, 301C79AE27200D9F0016307B /* OpenTokRemoteVideoFactory.swift in Sources */,
E9F7623B25922BCE00FB5CCF /* FlutterConstants.swift in Sources */, E9F7623B25922BCE00FB5CCF /* FlutterConstants.swift in Sources */,
306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */, 306FE6CB271D8B73002D6EFC /* OpenTok.swift in Sources */,

@ -30,11 +30,13 @@ var userNotificationCenterDelegate:UNUserNotificationCenterDelegate? = nil
flutterViewController = mainViewController flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController) HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok")) OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
HMGPenguinInPlatformBridge.initialize(flutterViewController: flutterViewController)
}else if let mainViewController = initialViewController(){ // platform initialization suppose to be in background }else if let mainViewController = initialViewController(){ // platform initialization suppose to be in background
flutterViewController = mainViewController flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController) HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok")) OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
HMGPenguinInPlatformBridge.initialize(flutterViewController: flutterViewController)
} }
} }

@ -1,6 +1,5 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
final Color? secondaryColor = appColor; final Color? secondaryColor = Colors.red[800];
final Color? dividerColor = Colors.grey[600]; final Color? dividerColor = Colors.grey[600];

@ -668,10 +668,10 @@ var GET_DENTAL_INSTRUCTIONS = 'Services/OUTPs.svc/Rest/getProcedureNotification'
//PAYFORT //PAYFORT
var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails"; var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails";
var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse"; var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse";
// var payFortEnvironment = FortEnvironment.production; var payFortEnvironment = FortEnvironment.production;
// var applePayMerchantId = "merchant.com.hmgwebservices"; var applePayMerchantId = "merchant.com.hmgwebservices";
var payFortEnvironment = FortEnvironment.test; // var payFortEnvironment = FortEnvironment.test;
var applePayMerchantId = "merchant.com.hmgwebservices.uat"; // var applePayMerchantId = "merchant.com.hmgwebservices.uat";
class AppGlobal { class AppGlobal {
static var context; static var context;

@ -116,13 +116,13 @@ const Map localizedValues = {
"national-id-number": {"en": "National ID Number", "ar": "رقم الهوية الوطنية / الاقامة"}, "national-id-number": {"en": "National ID Number", "ar": "رقم الهوية الوطنية / الاقامة"},
"medical-file-number": {"en": "Medical File Number", "ar": "رقم الملف الطبي"}, "medical-file-number": {"en": "Medical File Number", "ar": "رقم الملف الطبي"},
'login': {'en': 'Login', 'ar': 'دخول'}, 'login': {'en': 'Login', 'ar': 'دخول'},
'loginregister': {'en': 'Login', 'ar': 'دخول'}, 'loginregister': {'en': 'Login / Register', 'ar': 'دخول/ تسجيل'},
'poweredBy': {'en': 'Powered by', 'ar': 'مشغل بواسطة'}, 'poweredBy': {'en': 'Powered by', 'ar': 'مشغل بواسطة'},
"welcome": {"en": "Welcome", "ar": "مرحبا بكم"}, "welcome": {"en": "Welcome", "ar": "مرحبا بكم"},
"welcome-to": {"en": "Welcome to", "ar": "مرحبا بك في"}, "welcome-to": {"en": "Welcome to", "ar": "مرحبا بك في"},
"patient-app": {"en": "Patient App", "ar": "تطبيق المراجعين"}, "patient-app": {"en": "Patient App", "ar": "تطبيق المراجعين"},
"welcome_text": {"en": "Dr. Sulaiman Al Habib Mobile Application", "ar": "الدكتور سليمان الحبيب لتطبيقات الهاتف"}, "welcome_text": {"en": "Dr. Sulaiman Al Habib Mobile Application", "ar": "الدكتور سليمان الحبيب لتطبيقات الهاتف"},
"king-khalid-university": {"en": "King Khalid University", "ar": "جامعة الملك خالد"}, "dr-sulaiman-text": {"en": "Dr. Sulaiman Al Habib", "ar": "د. سليمان الحبيب"},
'welcome_text2': {'en': 'Have you previously visited the hospitals or medical centers of Dr. Sulaiman Al Habib?', 'ar': 'هل قمت مسبقا بزيارة مستشفيات او مراكز الدكتور سليمان الحبيب الطبية ؟'}, 'welcome_text2': {'en': 'Have you previously visited the hospitals or medical centers of Dr. Sulaiman Al Habib?', 'ar': 'هل قمت مسبقا بزيارة مستشفيات او مراكز الدكتور سليمان الحبيب الطبية ؟'},
'yes': {'en': 'Yes', 'ar': 'نعم'}, 'yes': {'en': 'Yes', 'ar': 'نعم'},
'no': {'en': 'No', 'ar': 'لا'}, 'no': {'en': 'No', 'ar': 'لا'},
@ -269,7 +269,6 @@ const Map localizedValues = {
"register-info-family": {"en": "How would like to add the new member?", "ar": "كيف ترغب باضافة العضو الجديد؟"}, "register-info-family": {"en": "How would like to add the new member?", "ar": "كيف ترغب باضافة العضو الجديد؟"},
"remove-family-member": {"en": "Remove this member?", "ar": "إزالة ملف العضو؟"}, "remove-family-member": {"en": "Remove this member?", "ar": "إزالة ملف العضو؟"},
"MyMedicalFile": {"en": "My Medical File", 'ar': 'الملف الطبي الالكتروني'}, "MyMedicalFile": {"en": "My Medical File", 'ar': 'الملف الطبي الالكتروني'},
"MyMedicalFiles": {"en": "Medical File", 'ar': 'الملف الطبي'},
"myMedicalFileSubTitle": {"en": "All your medical records", 'ar': 'جميع سجلاتك الطبية'}, "myMedicalFileSubTitle": {"en": "All your medical records", 'ar': 'جميع سجلاتك الطبية'},
"viewMore": {"en": "View More", 'ar': 'عرض المزيد'}, "viewMore": {"en": "View More", 'ar': 'عرض المزيد'},
"homeHealthCareService": {"en": "Home Health Care Service", 'ar': 'الرعاية الصحية المنزلية'}, "homeHealthCareService": {"en": "Home Health Care Service", 'ar': 'الرعاية الصحية المنزلية'},
@ -494,7 +493,7 @@ const Map localizedValues = {
"ar": "ar":
"توفر هذه الخدمة مجموعه من خدمات الرعايه الصحيه المنزلية و متابعه مستمره وشامله للذين لا يستطيعون الوصول للمنشات الصحيه في اماكن اقامتهم (التحاليل المخبرية الاشعة التطعيمات العلاج الطبيعي) ... " "توفر هذه الخدمة مجموعه من خدمات الرعايه الصحيه المنزلية و متابعه مستمره وشامله للذين لا يستطيعون الوصول للمنشات الصحيه في اماكن اقامتهم (التحاليل المخبرية الاشعة التطعيمات العلاج الطبيعي) ... "
}, },
"LoginRegister": {"en": "Login", "ar": "دخول"}, "LoginRegister": {"en": "Login/Register", "ar": "دخول / تسجيل"},
"OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"}, "OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"},
"info-lab": { "info-lab": {
"en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", "en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.",
@ -539,7 +538,6 @@ const Map localizedValues = {
"review": {"en": " reviews", "ar": "تقييمات"}, "review": {"en": " reviews", "ar": "تقييمات"},
"viewMedicalFile": {"en": "View Details", "ar": "عرض الملف الطبي"}, "viewMedicalFile": {"en": "View Details", "ar": "عرض الملف الطبي"},
"viewAllServices": {"en": "View All Services", "ar": "عرض جميع الخدمات"}, "viewAllServices": {"en": "View All Services", "ar": "عرض جميع الخدمات"},
"allServices": {"en": "All Services", "ar": "جميع الخدمات"},
"medicalFile": {"en": "Medical File", "ar": "ملفي الطبي"}, "medicalFile": {"en": "Medical File", "ar": "ملفي الطبي"},
"verified": {"en": "Verified", "ar": "تم التحقق"}, "verified": {"en": "Verified", "ar": "تم التحقق"},
"checkup": {"en": "Checkup", "ar": "فحص"}, "checkup": {"en": "Checkup", "ar": "فحص"},
@ -552,7 +550,7 @@ const Map localizedValues = {
"erservices": {"en": "Emergency", "ar": "الطوارئ"}, "erservices": {"en": "Emergency", "ar": "الطوارئ"},
"services2": {"en": "Services", "ar": "خدمات"}, "services2": {"en": "Services", "ar": "خدمات"},
"cantSeeProfile": {"en": "To view your medical profile, please log in or register now", "ar": "لتصفح ملفك الطبي الرجاء تسجيل الدخول أو التسجيل الآن"}, "cantSeeProfile": {"en": "To view your medical profile, please log in or register now", "ar": "لتصفح ملفك الطبي الرجاء تسجيل الدخول أو التسجيل الآن"},
"loginRegisterNow": {"en": "Login Now", "ar": "تسجيل الدخول الآن"}, "loginRegisterNow": {"en": "Login or Register Now", "ar": "تسجيل الدخول أو التسجيل الآن"},
"HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"}, "HMGPharmacy": {"en": "HMG Pharmacy", "ar": "صيدلية HMG"},
"ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"}, "ecommerceSolution": {"en": "Ecommerce Solution", "ar": "حل التجارة الإلكترونية"},
"comprehensive": {"en": "Comprehensive", "ar": "شامل"}, "comprehensive": {"en": "Comprehensive", "ar": "شامل"},
@ -1815,37 +1813,37 @@ const Map localizedValues = {
"ar": "الرجاء السماح لتطبيق مجموعة الحبيب الطبية للظهورعلى سطح الشاشة عند استلام الاتصال من الطبيب لخدمة اللايف كير" "ar": "الرجاء السماح لتطبيق مجموعة الحبيب الطبية للظهورعلى سطح الشاشة عند استلام الاتصال من الطبيب لخدمة اللايف كير"
}, },
"cameraPermissionDialog": { "cameraPermissionDialog": {
"en": "King Khalid University app needs to access Camera to enable virtual consultation between patient & doctor, attach images and scan QR for parking service.", "en": "Dr. Al Habib app needs to access Camera to enable virtual consultation between patient & doctor, attach images and scan QR for parking service.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى الكاميرا لتمكين الاستشارة الافتراضية بين المريض والطبيب ، وإرفاق الصور ومسح QR لخدمة وقوف السيارات." "ar": "يحتاج تطبيق دكتور الحبيب الى صلاحية الوصول إلى الكاميرا لخدمة الاستشارة الافتراضية بين المراجع والطبيب وإرفاق الصور ومسح رمز الاستجابة السريع لخدمة مواقف السيارات."
}, },
"galleryPermission": { "galleryPermission": {
"en": "King Khalid University app needs to access Read & write external storage to upload images & documents in the E-Referral module and renew and update the insurance cards.", "en": "Dr. Al Habib app needs to access Read & write external storage to upload images & documents in the E-Referral module and renew and update the insurance cards.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى وحدة التخزين الخارجية للقراءة والكتابة لتحميل الصور والمستندات في وحدة الإحالة الإلكترونية وتجديد وتحديث بطاقات التأمين." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول إلى معرض الصور وذلك لتحميل الصور والمستندات لخدمة الإحالة الإلكترونية وكذلك لخدمة تجديد بطاقات التأمين وتحديثها."
}, },
"locationPermissionDialog": { "locationPermissionDialog": {
"en": "en":
"King Khalid University app collects location data to show the nearest HMG hospitals and ER Locations and provides health care services to your location and Health weather indicators service and the medication delivery.", "Dr. Al Habib app collects location data to show the nearest HMG hospitals and ER Locations and provides health care services to your location and Health weather indicators service and the medication delivery.",
"ar": "يجمع تطبيق جامعة الملك خالد بيانات الموقع لإظهار أقرب مستشفيات المجموعة ومواقع الطوارئ ويوفر خدمات الرعاية الصحية لموقعك وخدمة مؤشرات الطقس الصحي وتوصيل الأدوية." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى الموقع لإظهار أقرب مستشفيات المجموعة، مواقع الطوارئ، تقديم خدمات الرعاية الصحية إلى موقعك، خدمة مؤشرات الطقس الصحية وكذلك خدمة توصيل الأدوية."
}, },
"calendarPermission": { "calendarPermission": {
"en": "King Khalid University app collects calendar data to modify and set reminders for Appointments", "en": "Dr. Al Habib app collects calendar data to modify and set reminders for Appointments",
"ar": "يقوم تطبيق جامعة الملك خالد بجمع بيانات التقويم لتعديل وتعيين تذكيرات للمواعيد" "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى التقويم وذلك لاضافة تذكيرات بالمواعيد في التقويم."
}, },
"recordAudioPermission": { "recordAudioPermission": {
"en": "King Khalid University app needs audio permission to enable voice command features.", "en": "Dr. Al Habib app needs audio permission to enable voice command features.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى إذن صوتي لتمكين ميزات الأوامر الصوتية." "ar": "يحتاج تطبيق دكتور الحبيب إلى صلاحية الوصول الى الصوت لتفعيل خدمة الأوامر الصوتية."
}, },
"wifiPermission": { "wifiPermission": {
"en": "King Khalid University app needs to access WiFi state permission to connect to the HMG WiFi network from within the app when you visit the hospital.", "en": "Dr. Al Habib app needs to access WiFi state permission to connect to the HMG WiFi network from within the app when you visit the hospital.",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الوصول إلى إذن حالة WiFi للاتصال بشبكة HMG WiFi من داخل التطبيق عند زيارة المستشفى." "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى الواي فاي للاتصال بشبكة الواي فاي في المجموعة عند زيارة المستشفى."
}, },
"physicalActivityPermission": { "physicalActivityPermission": {
"en": "King Khalid University app collects physical activity data to read heart rate, steps & distance from your smartwatch & send it to your doctor.", "en": "Dr. Al Habib app collects physical activity data to read heart rate, steps & distance from your smartwatch & send it to your doctor.",
"ar": "يجمع تطبيق جامعة الملك خالد بيانات النشاط البدني لقراءة معدل ضربات القلب والخطوات والمسافة من ساعتك الذكية وإرسالها إلى طبيبك." "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى بيانات النشاط البدني لقراءة معدل ضربات القلب والخطوات والمسافة من ساعتك الذكية وتحميلها على ملفك الطبي حتى يتمكن الطبيب من الاطلاع عليها."
}, },
"bluetoothPermission": { "bluetoothPermission": {
"en": "King Khalid University app needs to access Bluetooth permission to connect blood pressure & blood sugar devices with the app to analyze the data", "en": "Dr. Al Habib app needs to access Bluetooth permission to connect blood pressure & blood sugar devices with the app to analyze the data",
"ar": "يحتاج تطبيق جامعة الملك خالد إلى الحصول على إذن Bluetooth لتوصيل أجهزة ضغط الدم وسكر الدم بالتطبيق لتحليل البيانات" "ar": "يحتاج تطبيق دكتور الحبيب إلى الوصول إلى البلوتوث لربط أجهزة ضغط الدم وسكر الدم بالتطبيق لتحليل البيانات وتحميلها على ملفك الطبي حتى يتمكن الطبيب من الاطلاع عليها."
}, },
"privacyPolicy": {"en": "Privacy Policy", "ar": "سياسة الخصوصية"}, "privacyPolicy": {"en": "Privacy Policy", "ar": "سياسة الخصوصية"},
"termsConditions": {"en": "Terms & Conditions", "ar": "الأحكام والشروط"}, "termsConditions": {"en": "Terms & Conditions", "ar": "الأحكام والشروط"},

@ -41,7 +41,6 @@ class DoctorList {
dynamic serviceID; dynamic serviceID;
String? setupID; String? setupID;
List<String>? speciality; List<String>? speciality;
List<String>? specialityN;
dynamic workingHours; dynamic workingHours;
dynamic decimalDoctorRate; dynamic decimalDoctorRate;
@ -88,7 +87,6 @@ class DoctorList {
this.serviceID, this.serviceID,
this.setupID, this.setupID,
this.speciality, this.speciality,
this.specialityN,
this.workingHours, this.workingHours,
this.decimalDoctorRate}); this.decimalDoctorRate});
@ -135,7 +133,6 @@ class DoctorList {
serviceID = json['ServiceID']; serviceID = json['ServiceID'];
setupID = json['SetupID']; setupID = json['SetupID'];
if (json.containsKey('Speciality') && json['Speciality'] != null) speciality = json['Speciality'].cast<String>(); if (json.containsKey('Speciality') && json['Speciality'] != null) speciality = json['Speciality'].cast<String>();
if (json.containsKey('SpecialityN') && json['SpecialityN'] != null) specialityN = json['SpecialityN'].cast<String>();
workingHours = json['WorkingHours']; workingHours = json['WorkingHours'];
decimalDoctorRate = json['DecimalDoctorRate']; decimalDoctorRate = json['DecimalDoctorRate'];
} }
@ -183,7 +180,6 @@ class DoctorList {
data['ServiceID'] = this.serviceID; data['ServiceID'] = this.serviceID;
data['SetupID'] = this.setupID; data['SetupID'] = this.setupID;
data['Speciality'] = this.speciality; data['Speciality'] = this.speciality;
data['SpecialityN'] = this.specialityN;
data['WorkingHours'] = this.workingHours; data['WorkingHours'] = this.workingHours;
data['DecimalDoctorRate'] = this.decimalDoctorRate; data['DecimalDoctorRate'] = this.decimalDoctorRate;
return data; return data;

@ -25,7 +25,6 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../../theme/theme_value.dart';
import '../dialogs/select_city_dialog.dart'; import '../dialogs/select_city_dialog.dart';
class NewEReferralStepThreePage extends StatefulWidget { class NewEReferralStepThreePage extends StatefulWidget {
@ -162,7 +161,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
color: appColor, color: CustomColors.accentColor,
), ),
), ),
), ),
@ -249,7 +248,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
children: [ children: [
Checkbox( Checkbox(
value: isPatientInsured, value: isPatientInsured,
activeColor: CustomColors.primaryColor, activeColor: CustomColors.accentColor,
onChanged: (bool? newValue) { onChanged: (bool? newValue) {
setState(() { setState(() {
isPatientInsured = newValue!; isPatientInsured = newValue!;
@ -343,7 +342,7 @@ class _NewEReferralStepThreePageState extends State<NewEReferralStepThreePage> {
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,
decoration: TextDecoration.underline, decoration: TextDecoration.underline,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
), ),

@ -37,6 +37,7 @@ class _AllHabibMedicalSevicePage2State extends State<AllHabibMedicalSevicePage2>
AuthProvider authProvider = new AuthProvider(); AuthProvider authProvider = new AuthProvider();
WeatherService _weatherService = WeatherService(); WeatherService _weatherService = WeatherService();
double weatherNum = 30; double weatherNum = 30;
late ProjectViewModel projectViewModel;
@override @override
void initState() { void initState() {
@ -235,7 +236,7 @@ class _AllHabibMedicalSevicePage2State extends State<AllHabibMedicalSevicePage2>
itemCount: hmgServices.length, itemCount: hmgServices.length,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return ServicesView(hmgServices[index], index, false); return ServicesView(hmgServices[index], index, false, projectViewModel);
}, },
), ),
), ),

@ -669,7 +669,6 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails> with SingleTic
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -174,7 +174,7 @@ class _BMICalculatorState extends State<BMICalculator> {
padding: EdgeInsets.all(16), padding: EdgeInsets.all(16),
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBMI(); calculateBMI();

@ -220,7 +220,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -254,7 +254,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -410,7 +410,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBmr(); calculateBmr();

@ -74,7 +74,7 @@ class BmrResultPage extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -98,7 +98,7 @@ class BmrResultPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -327,7 +327,7 @@ class _BodyFatState extends State<BodyFat> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -361,7 +361,7 @@ class _BodyFatState extends State<BodyFat> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -493,7 +493,7 @@ class _BodyFatState extends State<BodyFat> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
calculateBodyFat(); calculateBodyFat();

@ -78,7 +78,7 @@ class FatResult extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -96,7 +96,7 @@ class FatResult extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -156,7 +156,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(!isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(!isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -190,7 +190,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadius(isMale ? CustomColors.primaryColor : Colors.white, 100), decoration: containerRadius(isMale ? CustomColors.accentColor : Colors.white, 100),
), ),
), ),
mWidth(12), mWidth(12),
@ -344,7 +344,7 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: ageController.text.isNotEmpty ? int.parse(ageController.text) >120 ? Colors.grey : CustomColors.primaryColor : CustomColors.accentColor, color: ageController.text.isNotEmpty ? int.parse(ageController.text) >120 ? Colors.grey : CustomColors.accentColor : CustomColors.accentColor,
onTap: () { onTap: () {
if(ageController.text.isNotEmpty && int.parse(ageController.text) <121 && int.parse(_heightController.text)<250 && int.parse(_weightController.text) <200) if(ageController.text.isNotEmpty && int.parse(ageController.text) <121 && int.parse(_heightController.text)<250 && int.parse(_weightController.text) <200)
setState(() { setState(() {

@ -76,7 +76,7 @@ class CalorieResultPage extends StatelessWidget {
), ),
], ],
), ),
progressColor: CustomColors.primaryColor, progressColor: CustomColors.accentColor,
backgroundColor: Colors.white, backgroundColor: Colors.white,
), ),
), ),
@ -99,7 +99,7 @@ class CalorieResultPage extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).viewDocList, label: TranslationBase.of(context).viewDocList,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -137,7 +137,7 @@ class _CarbsState extends State<Carbs> {
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: Text( child: Text(
TranslationBase.of(context).notSure, TranslationBase.of(context).notSure,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.primaryColor, decoration: TextDecoration.underline), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.accentColor, decoration: TextDecoration.underline),
), ),
), ),
) )
@ -230,7 +230,7 @@ class _CarbsState extends State<Carbs> {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
setState(() { setState(() {
{ {

@ -74,7 +74,7 @@ class CarbsResult extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
label: TranslationBase.of(context).seeListOfDoctor, label: TranslationBase.of(context).seeListOfDoctor,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
onTap: () { onTap: () {
getDoctorsList(context); getDoctorsList(context);
}, },

@ -711,7 +711,6 @@ class _BookSuccessState extends State<BookSuccess> {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -569,15 +569,11 @@ class _DoctorProfileState extends State<DoctorProfile> with TickerProviderStateM
}); });
} }
navigateToLogin() async { navigateToLogin() {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
var data = await sharedPref.getObject(IMEI_USER_DATA); Navigator.of(context).pushNamed(
sharedPref.remove(REGISTER_DATA_FOR_LOGIIN); WELCOME_LOGIN,
if (data != null) { );
Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else {
Navigator.of(context).pushNamed(LOGIN_TYPE);
}
} }
Future navigateToBookConfirm(context) async { Future navigateToBookConfirm(context) async {

@ -4,8 +4,6 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart
import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -19,7 +17,6 @@ import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../MyAppointments/MyAppointments.dart';
import 'BookSuccess.dart'; import 'BookSuccess.dart';
class BookReminderPage extends StatefulWidget { class BookReminderPage extends StatefulWidget {
@ -209,13 +206,18 @@ class _BookReminderPageState extends State<BookReminderPage> {
} }
Future navigateToBookSuccess(BuildContext context) async { Future navigateToBookSuccess(BuildContext context) async {
Navigator.pop(context, null); Navigator.push(
Navigator.pushAndRemoveUntil(
context, context,
MaterialPageRoute(builder: (context) => LandingPage()), FadePage(
(Route<dynamic> route) => false, page: BookSuccess(
docObject: widget.docObject,
patientShareResponse: widget.patientShareResponse,
appoDateFormatted: widget.appoDateFormatted,
appoTimeFormatted: widget.appoTimeFormatted,
isCash: widget.isCash,
),
),
); );
Navigator.push(context, FadePage(page: MyAppointments()));
} }
Future<Map<Permission, PermissionStatus>> requestPermissions() async { Future<Map<Permission, PermissionStatus>> requestPermissions() async {

@ -71,7 +71,7 @@ class _SearchByDoctorState extends State<SearchByDoctor> {
minWidth: MediaQuery.of(context).size.width, minWidth: MediaQuery.of(context).size.width,
height: 45.0, height: 45.0,
child: CustomTextButton( child: CustomTextButton(
backgroundColor: CustomColors.primaryColor, backgroundColor: CustomColors.accentColor,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),

@ -36,7 +36,7 @@ class DoctorView extends StatefulWidget {
DoctorView( DoctorView(
{required this.doctor, {required this.doctor,
this.isLiveCareAppointment, this.isLiveCareAppointment,
this.isObGyneAppointment = false, this.isObGyneAppointment = false,
this.isDoctorNameSearch = false, this.isDoctorNameSearch = false,
this.isContinueDentalPlan = false, this.isContinueDentalPlan = false,
@ -50,6 +50,7 @@ class DoctorView extends StatefulWidget {
} }
class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMixin { class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMixin {
late ProjectViewModel projectViewModel; late ProjectViewModel projectViewModel;
@override @override
@ -98,12 +99,10 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
), ),
widget.isShowDate widget.isShowDate ? Text(
? Text( DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(widget.doctor.date)),
DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(widget.doctor.date)), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ) : Container(),
)
: Container(),
], ],
), ),
if (widget.doctor.doctorTitle != null) SizedBox(height: 6), if (widget.doctor.doctorTitle != null) SizedBox(height: 6),
@ -124,20 +123,12 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
children: <Widget>[ children: <Widget>[
if (widget.doctor.clinicName != null) MyRichText(TranslationBase.of(context).clinic + ":", widget.doctor.clinicName!, context.read<ProjectViewModel>().isArabic), if (widget.doctor.clinicName != null) MyRichText(TranslationBase.of(context).clinic + ":", widget.doctor.clinicName!, context.read<ProjectViewModel>().isArabic),
if (widget.doctor.projectName != null) MyRichText(TranslationBase.of(context).branch, widget.doctor.projectName!, context.read<ProjectViewModel>().isArabic), if (widget.doctor.projectName != null) MyRichText(TranslationBase.of(context).branch, widget.doctor.projectName!, context.read<ProjectViewModel>().isArabic),
if (!projectViewModel.isArabic) if (widget.doctor.speciality != null && widget.doctor.speciality!.length > 0)
if (widget.doctor.speciality != null && widget.doctor.speciality!.length > 0) Text(
Text( this.widget.doctor.speciality![0].trim(),
this.widget.doctor.speciality![0].trim(), // getDoctorSpeciality(this.doctor.speciality).trim(),
// getDoctorSpeciality(this.doctor.speciality).trim(), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12), ),
),
if (projectViewModel.isArabic)
if (widget.doctor.specialityN != null && widget.doctor.specialityN!.length > 0)
Text(
this.widget.doctor.specialityN![0].trim(),
// getDoctorSpeciality(this.doctor.speciality).trim(),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
),
if (widget.doctor.nearestFreeSlot != null) if (widget.doctor.nearestFreeSlot != null)
Text( Text(
getDate(widget.doctor.nearestFreeSlot), getDate(widget.doctor.nearestFreeSlot),
@ -156,18 +147,9 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
itemSize: 20, itemSize: 20,
ignoreGestures: true, ignoreGestures: true,
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(Icons.star, color: CustomColors.accentColor,),
Icons.star, half: Icon(Icons.star_half, color: CustomColors.accentColor,),
color: CustomColors.accentColor, empty: Icon(Icons.star, color: CustomColors.accentColor,),
),
half: Icon(
Icons.star_half,
color: CustomColors.accentColor,
),
empty: Icon(
Icons.star,
color: CustomColors.accentColor,
),
), ),
tapOnlyMode: true, tapOnlyMode: true,
itemPadding: EdgeInsets.symmetric(horizontal: 4.0), itemPadding: EdgeInsets.symmetric(horizontal: 4.0),
@ -285,14 +267,8 @@ class _DoctorViewState extends State<DoctorView> with AutomaticKeepAliveClientMi
} }
void next(BuildContext context) { void next(BuildContext context) {
Navigator.push( Navigator.push(context,
context, FadePage(page: ObGyneTimeSlots(projectID: widget.doctor.projectID!, selectedClinicID: widget.doctor.clinicID!, selectedDoctorID: widget.doctor.doctorID!, obGyneProcedureListResponse: widget.obGyneProcedureListResponse!)));
FadePage(
page: ObGyneTimeSlots(
projectID: widget.doctor.projectID!,
selectedClinicID: widget.doctor.clinicID!,
selectedDoctorID: widget.doctor.doctorID!,
obGyneProcedureListResponse: widget.obGyneProcedureListResponse!)));
} }
Future navigateToDoctorProfile(context, docObject, docProfile, {isAppo, bool isContinueDentalPlan = false}) async { Future navigateToDoctorProfile(context, docObject, docProfile, {isAppo, bool isContinueDentalPlan = false}) async {

@ -54,7 +54,6 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0.0)),
insetPadding: EdgeInsets.all(21), insetPadding: EdgeInsets.all(21),
child: ReminderDialog( child: ReminderDialog(
shouldPop: false,
onClick: (int i) async { onClick: (int i) async {
String text = ""; String text = "";
if (i == 0) { if (i == 0) {
@ -86,7 +85,6 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted,
scheduleDateTime: dateTime, scheduleDateTime: dateTime,
eventId: eventId); eventId: eventId);
Navigator.of(context).pop();
onSuccess(); onSuccess();
} }
} else { } else {
@ -102,9 +100,8 @@ Future<void> _showReminderDialog(BuildContext context, DateTime dateTime, String
class ReminderDialog extends StatefulWidget { class ReminderDialog extends StatefulWidget {
Function? onClick; Function? onClick;
bool? shouldPop;
ReminderDialog({this.onClick, this.shouldPop = true}); ReminderDialog({this.onClick});
@override @override
_ReminderDialogState createState() => _ReminderDialogState(); _ReminderDialogState createState() => _ReminderDialogState();
@ -250,9 +247,7 @@ class _ReminderDialogState extends State<ReminderDialog> {
TranslationBase.of(context).save, TranslationBase.of(context).save,
() { () {
widget.onClick!(i); widget.onClick!(i);
if(widget.shouldPop == true) { Navigator.pop(context);
Navigator.pop(context);
}
}, },
color: CustomColors.green, color: CustomColors.green,
), ),

@ -1,7 +1,6 @@
import 'package:diplomaticquarterapp/core/viewModels/contactus/livechat_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/contactus/livechat_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -111,7 +110,7 @@ class _HospitalsLiveChatPageState extends State<HospitalsLiveChatPage> {
TranslationBase.of(context).start, TranslationBase.of(context).start,
//Changed By Aamir URL //Changed By Aamir URL
chat!.isEmpty ? null : () => {launch(chat!)}, chat!.isEmpty ? null : () => {launch(chat!)},
color: appColor, color: Color(0xffD02127),
textColor: chat!.isEmpty ? Color(0xff000000) : Colors.white, textColor: chat!.isEmpty ? Color(0xff000000) : Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -243,7 +243,7 @@ class _AmbulanceRequestIndexPageState extends State<AmbulanceRequestIndexPage> {
width: 8, width: 8,
height: 8, height: 8,
decoration: containerRadius( decoration: containerRadius(
CustomColors.primaryColor, CustomColors.accentColor,
100, 100,
), ),
), ),

@ -226,7 +226,7 @@ class OrderLogPage extends StatelessWidget {
width: 8, width: 8,
height: 8, height: 8,
decoration: containerRadius( decoration: containerRadius(
CustomColors.primaryColor, CustomColors.accentColor,
100, 100,
), ),
), ),

@ -366,7 +366,7 @@ class RRTRequestPageState extends State<RRTRequestPage> {
else else
AppToast.showErrorToast(message: TranslationBase.of(context).pleaseAcceptTerms); AppToast.showErrorToast(message: TranslationBase.of(context).pleaseAcceptTerms);
}, },
color: acceptTerms ? CustomColors.primaryColor : Colors.grey, color: acceptTerms ? CustomColors.accentColor : Colors.grey,
), ),
), ),
], ],

@ -14,7 +14,6 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/SchedulePage.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
@ -273,7 +272,7 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
TranslationBase.of(context).reviewAppointment, TranslationBase.of(context).reviewAppointment,
goToBookConfirm, goToBookConfirm,
// DocAvailableAppointments.areSlotsAvailable ? goToBookConfirm : null, // DocAvailableAppointments.areSlotsAvailable ? goToBookConfirm : null,
color: appColor, color: Color(0xFFD02127),
disabledColor: Color(0xff28323A).withOpacity(0.3), disabledColor: Color(0xff28323A).withOpacity(0.3),
), ),
), ),
@ -390,15 +389,15 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
tapOnlyMode: true, tapOnlyMode: true,

@ -9,7 +9,6 @@ import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -508,7 +507,7 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
height: 22, height: 22,
child: Radio( child: Radio(
value: _value, value: _value,
activeColor: _value == _currentPage ? appColor : Color(0xffE8E8E8), activeColor: _value == _currentPage ? Color(0xffD02127) : Color(0xffE8E8E8),
groupValue: _currentPage, groupValue: _currentPage,
onChanged: (index) { onChanged: (index) {
setState(() { setState(() {

@ -21,11 +21,35 @@ class ArrivedButtons {
"icon": 'lab_result.svg', "icon": 'lab_result.svg',
"caller": "labResult", "caller": "labResult",
}, },
{
"title": TranslationBase.of(AppGlobal.context).vitalSigns,
"subtitle": TranslationBase.of(AppGlobal.context).vitalSignsSubtitle,
"icon": 'vital_signs.svg',
"caller": "VitalSigns",
},
{
"title": TranslationBase.of(AppGlobal.context).raise,
"subtitle": TranslationBase.of(AppGlobal.context).complaint,
"icon": "raise_comp.svg",
"caller": "insertComplaint",
},
{
"title": TranslationBase.of(AppGlobal.context).insuranceApproval,
"subtitle": TranslationBase.of(AppGlobal.context).insuranceApprovalSubtitle,
"icon": 'insurance_approval.svg',
"caller": "Insurance",
},
{ {
"title": TranslationBase.of(AppGlobal.context).askDoctor, "title": TranslationBase.of(AppGlobal.context).askDoctor,
"subtitle": TranslationBase.of(AppGlobal.context).service, "subtitle": TranslationBase.of(AppGlobal.context).service,
"icon": 'ask_doctor.svg', "icon": 'ask_doctor.svg',
"caller": "askDoc", "caller": "askDoc",
}, },
{
"title": TranslationBase.of(AppGlobal.context).service,
"subtitle": TranslationBase.of(AppGlobal.context).appoSurvey,
"icon": "survey.svg",
"caller": "Survey",
}
]; ];
} }

@ -1445,7 +1445,6 @@ class _ToDoState extends State<ToDo> with SingleTickerProviderStateMixin {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -87,7 +87,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MADA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MADA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -137,7 +137,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "VISA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "VISA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -187,7 +187,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MASTERCARD" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "MASTERCARD" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -237,7 +237,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "TAMARA" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "TAMARA" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -287,7 +287,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "Installment" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "Installment" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(
@ -338,7 +338,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
width: 24, width: 24,
height: 24, height: 24,
decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "ApplePay" ? CustomColors.primaryColor : Colors.transparent, 100, Colors.grey, 0.5), decoration: containerColorRadiusBorderWidth(selectedPaymentMethod == "ApplePay" ? CustomColors.accentColor : Colors.transparent, 100, Colors.grey, 0.5),
), ),
mWidth(12), mWidth(12),
Container( Container(

@ -80,7 +80,7 @@ class _PaymentDialogState extends State<PaymentDialog> {
SizedBox(height: 12), SizedBox(height: 12),
Text( Text(
TranslationBase.of(context).appoPaymentConfirm, TranslationBase.of(context).appoPaymentConfirm,
style: TextStyle(fontSize: 14.0, color: CustomColors.primaryColor, fontWeight: FontWeight.w600, letterSpacing: -0.56), style: TextStyle(fontSize: 14.0, color: CustomColors.accentColor, fontWeight: FontWeight.w600, letterSpacing: -0.56),
), ),
SizedBox(height: 12), SizedBox(height: 12),
Container( Container(

@ -55,7 +55,7 @@ class _TodoListCardState extends State<TodoListCard> {
), ),
Padding( Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0), padding: const EdgeInsets.only(left: 8.0, right: 8.0),
child: Text("01:23:22 " + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.primaryColor, letterSpacing: -0.48)), child: Text("01:23:22 " + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.accentColor, letterSpacing: -0.48)),
), ),
], ],
), ),
@ -119,9 +119,9 @@ class _TodoListCardState extends State<TodoListCard> {
itemSize: 20, itemSize: 20,
ignoreGestures: true, ignoreGestures: true,
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon(Icons.star, color: CustomColors.primaryColor,), full: Icon(Icons.star, color: CustomColors.accentColor,),
half: Icon(Icons.star_half, color: CustomColors.primaryColor,), half: Icon(Icons.star_half, color: CustomColors.accentColor,),
empty: Icon(Icons.star, color: CustomColors.primaryColor,), empty: Icon(Icons.star, color: CustomColors.accentColor,),
), ),
tapOnlyMode: true, tapOnlyMode: true,
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],
@ -158,7 +158,7 @@ class _TodoListCardState extends State<TodoListCard> {
padding: const EdgeInsets.only(top: 0.0), padding: const EdgeInsets.only(top: 0.0),
child: Text( child: Text(
"More Details", "More Details",
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: CustomColors.primaryColor, letterSpacing: -0.48, height: 25 / 16, decoration: TextDecoration.underline), style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: CustomColors.accentColor, letterSpacing: -0.48, height: 25 / 16, decoration: TextDecoration.underline),
), ),
), ),
], ],

@ -8,7 +8,6 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -346,7 +345,7 @@ class _SendFeedbackPageState extends State<SendFeedbackPage> {
}); });
} }
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -209,7 +209,7 @@ class _StatusFeedbackPageState extends State<StatusFeedbackPage> {
child: Container( child: Container(
margin: EdgeInsets.only(top: 12), margin: EdgeInsets.only(top: 12),
decoration: BoxDecoration( decoration: BoxDecoration(
color: (cOCItemList[index].statusId==7||cOCItemList[index].statusId==8)?CustomColors.primaryColor:(cOCItemList[index].statusId==10||cOCItemList[index].statusId==6||cOCItemList[index].statusId==9)?CustomColors.green:CustomColors.orange, color: (cOCItemList[index].statusId==7||cOCItemList[index].statusId==8)?CustomColors.accentColor:(cOCItemList[index].statusId==10||cOCItemList[index].statusId==6||cOCItemList[index].statusId==9)?CustomColors.green:CustomColors.orange,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),

@ -311,15 +311,15 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
onRatingUpdate: (double value) {}, onRatingUpdate: (double value) {},
@ -506,15 +506,15 @@ class _FinalProductsPageState extends State<FinalProductsPage> {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
onRatingUpdate: (double value) {}, onRatingUpdate: (double value) {},

@ -151,7 +151,7 @@ class _AttachInsuranceCardImageDialogState extends State<AttachInsuranceCardImag
); );
}, },
textColor: Colors.white, textColor: Colors.white,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
Text( Text(

@ -58,7 +58,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate> with SingleTickerProv
controller: _tabController, controller: _tabController,
isScrollable: false, isScrollable: false,
indicatorWeight: 3.0, indicatorWeight: 3.0,
indicatorColor: CustomColors.primaryColor, indicatorColor: CustomColors.accentColor,
labelColor: CustomColors.textDarkColor, labelColor: CustomColors.textDarkColor,
labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0),
unselectedLabelColor: CustomColors.textDarkColor, unselectedLabelColor: CustomColors.textDarkColor,

@ -47,57 +47,44 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
super.initState(); super.initState();
} }
// initialiseHmgServices(bool isLogin) { initialiseHmgServices(bool isLogin) {
// hmgServices.clear(); hmgServices.clear();
//
// hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin)); hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin));
// // hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin)); hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// // hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin)); // hmgServices.add(HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin));
// // hmgServices.add(HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin)); hmgServices.add(HmgServices(2, "Hospital", "Navigation", "assets/images/new/emergency.svg", isLogin));
// // hmgServices.add(HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin)); hmgServices.add(HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin));
// // hmgServices.add(HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin)); hmgServices.add(HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin));
// // hmgServices.add(HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin)); hmgServices.add(HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin));
// // hmgServices.add(HmgServices(7, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin)); hmgServices.add(HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin));
// hmgServices.add(HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin)); hmgServices.add(HmgServices(7, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin));
// } hmgServices.add(HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
}
initialiseInPatientHmgServices(bool isLogin) { initialiseInPatientHmgServices(bool isLogin) {
hmgServices.clear(); hmgServices.clear();
// hmgServices.add(new HmgServices(0, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin)); // hmgServices.add(new HmgServices(0, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin)); // hmgServices.add(new HmgServices(1, TranslationBase.of(context).covidTest, TranslationBase.of(context).driveThru, "assets/images/new/CoronaIcon.svg", isLogin));
// hmgServices.add(new HmgServices(2, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin)); // hmgServices.add(new HmgServices(2, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", isLogin));
// hmgServices.add(new HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin)); hmgServices.add(new HmgServices(3, TranslationBase.of(context).hhcHome, TranslationBase.of(context).healthCare, "assets/images/new/HHC.svg", isLogin));
// hmgServices.add(new HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin)); hmgServices.add(new HmgServices(4, TranslationBase.of(context).checkup, TranslationBase.of(context).comprehensive, "assets/images/new/comprehensive_checkup.svg", isLogin));
// hmgServices.add(new HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin)); hmgServices.add(new HmgServices(2, TranslationBase.of(context).emergencyTitle, TranslationBase.of(context).emergencySubtitle, "assets/images/new/emergency.svg", isLogin));
// hmgServices.add(new HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin)); hmgServices.add(new HmgServices(6, TranslationBase.of(context).ereferralTitle, TranslationBase.of(context).ereferralSubtitle, "assets/images/new/E_Referral.svg", isLogin));
// hmgServices.add(new HmgServices(7, "H\u2082O", TranslationBase.of(context).dailyWater, "assets/images/new/h2o.svg", isLogin)); hmgServices.add(new HmgServices(7, "H\u2082O", TranslationBase.of(context).dailyWater, "assets/images/new/h2o.svg", isLogin));
hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin)); hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
} }
initServices(bool isLogin){
hmgServices.clear();
// hmgServices.add(HmgServices(0, TranslationBase.of(context).book, TranslationBase.of(context).appointmentLabel, "assets/images/new/book appointment.svg", isLogin));
hmgServices.add(HmgServices(31, TranslationBase.of(context).myAppointments, TranslationBase.of(context).medicalFile, "assets/images/new/bottom_nav/my_file.svg", isLogin));
hmgServices.add(HmgServices(24, TranslationBase.of(context).myAppointments, TranslationBase.of(context).myAppointmentsList, "assets/images/new/services/appointment_list.svg", isLogin));
hmgServices.add(HmgServices(25, TranslationBase.of(context).lab, TranslationBase.of(context).labSubtitle, "assets/images/new/services/lab_result.svg", isLogin));
hmgServices.add(HmgServices(26, TranslationBase.of(context).radiology, TranslationBase.of(context).radiologySubtitle, "assets/images/new/services/radiology.svg", isLogin));
hmgServices.add(HmgServices(27, TranslationBase.of(context).medicines, TranslationBase.of(context).medicinesSubtitle, "assets/images/new/services/medicine_prescription.svg", isLogin));
// hmgServices.add(HmgServices(28, TranslationBase.of(context).vitalSigns, TranslationBase.of(context).vitalSignsSubtitle, "assets/images/new/services/vital_signs.svg", isLogin));
hmgServices.add(HmgServices(29, TranslationBase.of(context).myMedical, TranslationBase.of(context).myMedicalSubtitle, "assets/images/new/services/active_medication.svg", isLogin));
hmgServices.add(HmgServices(30, TranslationBase.of(context).myDoctor, TranslationBase.of(context).myDoctorSubtitle, "assets/images/new/services/my_doc.svg", isLogin));
// hmgServices.add(HmgServices(31, TranslationBase.of(context).invoicesList, TranslationBase.of(context).myInvoice, "assets/images/new/services/invoice_list.svg", isLogin));
// hmgServices.add(HmgServices(32, TranslationBase.of(context).anicllaryOrders, TranslationBase.of(context).myInvoice, "assets/images/new/services/ancillary.svg", isLogin));
// hmgServices.add(HmgServices(1, TranslationBase.of(context).liveCare, TranslationBase.of(context).onlineConsulting, "assets/images/new/Live_Care.svg", isLogin));
// hmgServices.add(new HmgServices(8, TranslationBase.of(context).connectTitle, TranslationBase.of(context).connectSubtitle, "assets/images/new/reach_us.svg", isLogin));
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
initServices(false);
if (projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest) {
initialiseInPatientHmgServices(false);
} else {
initialiseHmgServices(false);
}
var appoCountProvider = Provider.of<ToDoCountProviderModel>(context); var appoCountProvider = Provider.of<ToDoCountProviderModel>(context);
// var userProvider = Provider.of<ToDoCountProviderModel>(context); // var userProvider = Provider.of<ToDoCountProviderModel>(context);
List<Widget> myMedicalList = Utils.myMedicalListHomePage(projectViewModel: projectViewModel, context: context, count: appoCountProvider.count, isLogin: projectViewModel.isLogin); List<Widget> myMedicalList = Utils.myMedicalListHomePage(projectViewModel: projectViewModel, context: context, count: appoCountProvider.count, isLogin: projectViewModel.isLogin);
@ -141,109 +128,109 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
// height: MediaQuery.of(context).size.width / 2.6, // height: MediaQuery.of(context).size.width / 2.6,
), ),
), ),
// projectViewModel.isLogin projectViewModel.isLogin
// ? Column( ? Column(
// children: [ children: [
// Padding( Padding(
// padding: projectViewModel.isArabic padding: projectViewModel.isArabic
// ? EdgeInsets.only( ? EdgeInsets.only(
// right: 20, right: 20,
// left: 8, left: 8,
// ) )
// : EdgeInsets.only( : EdgeInsets.only(
// left: 20, left: 20,
// right: 8, right: 8,
// ), ),
// child: Row( child: Row(
// children: [ children: [
// Expanded( Expanded(
// child: Text( child: Text(
// TranslationBase.of(context).myMedicalFile, TranslationBase.of(context).myMedicalFile,
// style: TextStyle( style: TextStyle(
// color: Colors.black, color: Colors.black,
// fontSize: 16, fontSize: 16,
// fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
// letterSpacing: -0.96, letterSpacing: -0.96,
// height: 19 / 16, height: 19 / 16,
// ), ),
// ), ),
// ), ),
// TextButton( TextButton(
// onPressed: () { onPressed: () {
// widget.onMedicalFileClick!(); widget.onMedicalFileClick!();
// // navigateTo(context, MedicalProfilePageNew()); // navigateTo(context, MedicalProfilePageNew());
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).viewMedicalFile, TranslationBase.of(context).viewMedicalFile,
// style: TextStyle( style: TextStyle(
// color: CustomColors.primaryColor, color: CustomColors.accentColor,
// fontSize: 12, fontSize: 12,
// letterSpacing: -0.72, letterSpacing: -0.72,
// height: 23 / 12, height: 23 / 12,
// ), ),
// ), ),
// ), ),
// ], ],
// ), ),
// ), ),
// mHeight(4), mHeight(4),
// Container( Container(
// width: double.infinity, width: double.infinity,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// child: ListView.separated( child: ListView.separated(
// itemCount: myMedicalList.length, itemCount: myMedicalList.length,
// padding: EdgeInsets.zero, padding: EdgeInsets.zero,
// scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
// physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
// itemBuilder: (context, index) { itemBuilder: (context, index) {
// return projectViewModel.isArabic return projectViewModel.isArabic
// ? Container( ? Container(
// child: myMedicalList[index], child: myMedicalList[index],
// width: MediaQuery.of(context).size.width * 0.26, width: MediaQuery.of(context).size.width * 0.26,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// margin: EdgeInsets.only(left: index == 4 ? 20 : 0, right: index == 0 ? 20 : 0), margin: EdgeInsets.only(left: index == 4 ? 20 : 0, right: index == 0 ? 20 : 0),
// ) )
// : Container( : Container(
// child: myMedicalList[index], child: myMedicalList[index],
// width: MediaQuery.of(context).size.width * 0.26, width: MediaQuery.of(context).size.width * 0.26,
// height: MediaQuery.of(context).size.width * 0.26, height: MediaQuery.of(context).size.width * 0.26,
// margin: EdgeInsets.only(left: index == 0 ? 20 : 0, right: index == 4 ? 20 : 0), margin: EdgeInsets.only(left: index == 0 ? 20 : 0, right: index == 4 ? 20 : 0),
// ); );
// }, },
// separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
// return mWidth(12); return mWidth(12);
// }, },
// ), ),
// ), ),
// ], ],
// ) )
// : Container(), : Container(),
mHeight(16), mHeight(16),
// Column( Column(
// children: [ children: [
// Divider( Divider(
// height: 1, height: 1,
// color: Color(0xFFC7C7C7), color: Color(0xFFC7C7C7),
// ), ),
// Container( Container(
// width: double.infinity, width: double.infinity,
// height: MediaQuery.of(context).size.width * 0.3, height: MediaQuery.of(context).size.width * 0.3,
// padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14), padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14),
// color: Colors.white, color: Colors.white,
// child: Row( child: Row(
// children: [ children: [
// offersButton(), offersButton(),
// mWidth(10), mWidth(10),
// hmgButton(), hmgButton(),
// ], ],
// ), ),
// ), ),
// Divider( Divider(
// height: 1, height: 1,
// color: Color(0xFFC7C7C7), color: Color(0xFFC7C7C7),
// ), ),
// ], ],
// ), ),
mHeight(12), mHeight(12),
Column( Column(
children: [ children: [
@ -261,7 +248,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
TranslationBase.of(context).allServices, TranslationBase.of(context).hMGService,
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: 16, fontSize: 16,
@ -271,29 +258,28 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
), ),
), ),
), ),
// TextButton( TextButton(
// onPressed: () { onPressed: () {
// // AppSharedPreferences().getAll().then((value){ // AppSharedPreferences().getAll().then((value){
// // debugPrint("ALL SHARED PREFERENCES!!!!!"); // debugPrint("ALL SHARED PREFERENCES!!!!!");
// // debugPrint(jsonEncode(value)); // debugPrint(jsonEncode(value));
// // }); // });
// Navigator.push(context, FadePage(page: AllHabibMedicalSevicePage2())); Navigator.push(context, FadePage(page: AllHabibMedicalSevicePage2()));
// projectViewModel.analytics.hmgServices.viewAll(); projectViewModel.analytics.hmgServices.viewAll();
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).viewAllServices, TranslationBase.of(context).viewAllServices,
// style: TextStyle( style: TextStyle(
// color: CustomColors.accentColor, color: CustomColors.accentColor,
// fontSize: 12, fontSize: 12,
// letterSpacing: -0.72, letterSpacing: -0.72,
// height: 23 / 12, height: 23 / 12,
// ), ),
// ), ),
// ), ),
], ],
), ),
), ),
mHeight(12),
projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest projectViewModel.isPatientAdmitted || projectViewModel.patientHasAdmissionRequest
? Column( ? Column(
children: [ children: [
@ -311,7 +297,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
child: ServicesView( child: ServicesView(
new HmgServices(23, TranslationBase.of(context).InPatient, TranslationBase.of(context).inPatientServices, "assets/images/new/InPatient.svg", false), new HmgServices(23, TranslationBase.of(context).InPatient, TranslationBase.of(context).inPatientServices, "assets/images/new/InPatient.svg", false),
23, 23,
true)), true, projectViewModel)),
), ),
), ),
Expanded( Expanded(
@ -319,7 +305,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
child: AspectRatio( child: AspectRatio(
aspectRatio: 1.0, aspectRatio: 1.0,
child: ServicesView( child: ServicesView(
new HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", false), 2, true)), new HmgServices(5, TranslationBase.of(context).online, TranslationBase.of(context).payment, "assets/images/new/paymentMethods.png", false), 2, true, projectViewModel)),
), ),
], ],
), ),
@ -337,7 +323,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
itemCount: hmgServices.length, itemCount: hmgServices.length,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return ServicesView(hmgServices[index], index, true); return ServicesView(hmgServices[index], index, true, projectViewModel);
}, },
), ),
), ),
@ -356,7 +342,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
itemCount: hmgServices.length, itemCount: hmgServices.length,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return ServicesView(hmgServices[index], index, true); return ServicesView(hmgServices[index], index, true, projectViewModel);
}, },
), ),
), ),
@ -390,7 +376,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
// color: Color(0xFF2B353E), // color: Color(0xFF2B353E),
decoration: containerRadius(CustomColors.primaryColor, 20), decoration: containerRadius(CustomColors.accentColor, 20),
), ),
Container( Container(
width: double.infinity, width: double.infinity,
@ -637,7 +623,7 @@ class _HomePageFragment2State extends State<HomePageFragment2> {
return Container( return Container(
width: MediaQuery.of(context).size.width * 0.06, width: MediaQuery.of(context).size.width * 0.06,
height: MediaQuery.of(context).size.width * 0.06, height: MediaQuery.of(context).size.width * 0.06,
decoration: containerRadius(CustomColors.primaryColor, 100), decoration: containerRadius(CustomColors.accentColor, 100),
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
child: SvgPicture.asset(icon), child: SvgPicture.asset(icon),
); );

@ -397,27 +397,25 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
if (data != null) { if (data != null) {
Navigator.of(context).pushNamed(CONFIRM_LOGIN); Navigator.of(context).pushNamed(CONFIRM_LOGIN);
} else { } else {
Navigator.of(context).pushNamed(LOGIN_TYPE);
}
// AppGlobal.context = context; // AppGlobal.context = context;
// GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
// authService.selectDeviceImei(DEVICE_TOKEN).then((value) async { authService.selectDeviceImei(DEVICE_TOKEN).then((value) async {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// var data = await sharedPref.getObject(IMEI_USER_DATA); var data = await sharedPref.getObject(IMEI_USER_DATA);
// if (value != null) { if (value != null) {
// setUserValues(value); setUserValues(value);
// Navigator.of(context).pushNamed(CONFIRM_LOGIN); Navigator.of(context).pushNamed(CONFIRM_LOGIN);
// } else { } else {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
// WELCOME_LOGIN, WELCOME_LOGIN,
// ); );
// } }
// }).catchError((err) { }).catchError((err) {
// GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
// Navigator.of(context).pushNamed(WELCOME_LOGIN); Navigator.of(context).pushNamed(WELCOME_LOGIN);
// }); });
// } }
} }
dummyCall() async { dummyCall() async {
@ -561,7 +559,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
child: new Container( child: new Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
decoration: new BoxDecoration( decoration: new BoxDecoration(
color: CustomColors.primaryColor, color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
constraints: BoxConstraints( constraints: BoxConstraints(
@ -652,22 +650,20 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
), ),
RobotIcon() RobotIcon()
])), ])),
// bottomNavigationBar: BottomNavBar( bottomNavigationBar: BottomNavBar(
// changeIndex: changeCurrentTab, changeIndex: changeCurrentTab,
// index: currentTab, index: currentTab,
// ), ),
floatingActionButtonLocation: FloatingActionButtonLocation.endContained, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: floatingActionButton:
(projectViewModel.havePrivilege(34) && currentTab == 0) (projectViewModel.havePrivilege(34) && currentTab == 0)
? Padding( ? FloatingButton(
padding: const EdgeInsets.only(bottom: 50.0, right: 10), elevation: true,
child: FloatingButton( onTap: () {
elevation: true, changeCurrentTab(2);
onTap: () { projectViewModel.analytics.appointment.book_appointment();
changeCurrentTab(2); },
}, )
),
)
: null); : null);
} }

@ -2,7 +2,6 @@ import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/models/slider_data.dart'; import 'package:diplomaticquarterapp/models/slider_data.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
@ -60,7 +59,7 @@ class LoggedSliderView extends StatelessWidget {
Row( Row(
children: [ children: [
Container( Container(
decoration: projectViewModel.isArabic ? containerColorRadiusLeft(appColor, 100) : containerColorRadiusRight(appColor, 100), decoration: projectViewModel.isArabic ? containerColorRadiusLeft(Color(0xFFFBF2E31), 100) : containerColorRadiusRight(Color(0xFFFBF2E31), 100),
padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6), padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6),
child: Text( child: Text(
TranslationBase.of(context).medicalFile, TranslationBase.of(context).medicalFile,
@ -133,75 +132,75 @@ class LoggedSliderView extends StatelessWidget {
), ),
), ),
mFlex(3), mFlex(3),
// Padding( Padding(
// padding: const EdgeInsets.only(left: 20, right: 20), padding: const EdgeInsets.only(left: 20, right: 20),
// child: Row( child: Row(
// children: <Widget>[ children: <Widget>[
// Expanded( Expanded(
// flex: 3, flex: 3,
// child: Row( child: Row(
// children: <Widget>[ children: <Widget>[
// SvgPicture.asset( SvgPicture.asset(
// 'assets/images/new/height.svg', 'assets/images/new/height.svg',
// width: 11, width: 11,
// height: 11, height: 11,
// ), ),
// mWidth(6), mWidth(6),
// Texts( Texts(
// "${TranslationBase.of(context).height}: ${model.heightCm} ${TranslationBase.of(context).cm}", "${TranslationBase.of(context).height}: ${model.heightCm} ${TranslationBase.of(context).cm}",
// color: Colors.white, color: Colors.white,
// fontSize: 8, fontSize: 8,
// ) )
// ], ],
// ), ),
// ), ),
// SizedBox( SizedBox(
// width: 3, width: 3,
// ), ),
// Expanded( Expanded(
// flex: 3, flex: 3,
// child: Row( child: Row(
// children: <Widget>[ children: <Widget>[
// SvgPicture.asset( SvgPicture.asset(
// 'assets/images/new/weight.svg', 'assets/images/new/weight.svg',
// width: 11, width: 11,
// height: 11, height: 11,
// ), ),
// mWidth(6), mWidth(6),
// Texts( Texts(
// '${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}', '${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}',
// color: Colors.white, color: Colors.white,
// fontSize: 8, fontSize: 8,
// ) )
// ], ],
// ), ),
// ), ),
// SizedBox( SizedBox(
// width: 3, width: 3,
// ), ),
// Expanded( Expanded(
// flex: 3, flex: 3,
// child: Row( child: Row(
// children: <Widget>[ children: <Widget>[
// SvgPicture.asset( SvgPicture.asset(
// 'assets/images/new/blood.svg', 'assets/images/new/blood.svg',
// width: 11, width: 11,
// height: 11, height: 11,
// ), ),
// mWidth(6), mWidth(6),
// Texts( Texts(
// '${TranslationBase.of(context).bloodType1} ${model.booldType}', '${TranslationBase.of(context).bloodType1} ${model.booldType}',
// color: Colors.white, color: Colors.white,
// fontSize: 7, fontSize: 7,
// ) )
// ], ],
// ), ),
// ), ),
// mFlex(1), mFlex(1),
// ], ],
// ), ),
// ), ),
// mFlex(2), mFlex(2),
], ],
), ),
), ),

@ -1,8 +1,6 @@
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../theme/theme_value.dart';
class OfferView extends StatelessWidget { class OfferView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -23,7 +21,7 @@ class OfferView extends StatelessWidget {
Text( Text(
"Kid's Offer", "Kid's Offer",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -42,14 +40,14 @@ class OfferView extends StatelessWidget {
Text( Text(
"Only ", "Only ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
), ),
), ),
Text( Text(
"500 ", "500 ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -57,7 +55,7 @@ class OfferView extends StatelessWidget {
Text( Text(
"SAR ", "SAR ",
style: TextStyle( style: TextStyle(
color: appColor, color: Color(0xFFFBF2E31),
fontSize: 14, fontSize: 14,
), ),
), ),

@ -29,28 +29,23 @@ import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart';
import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart'; import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app-permissions.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart';
import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../../locator.dart'; import '../../../locator.dart';
import '../../MyAppointments/MyAppointments.dart';
import '../../medical/active_medications/ActiveMedicationsPage.dart';
import '../../medical/doctor/doctor_home_page.dart';
import '../../medical/labs/labs_home_page.dart';
import '../../medical/prescriptions/prescriptions_home_page.dart';
import '../../medical/radiology/radiology_home_page.dart';
import '../landing_page_pharmcy.dart'; import '../landing_page_pharmcy.dart';
class ServicesView extends StatelessWidget { class ServicesView extends StatelessWidget {
@ -58,18 +53,15 @@ class ServicesView extends StatelessWidget {
int index; int index;
AuthenticatedUser authUser = new AuthenticatedUser(); AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider(); AuthProvider authProvider = new AuthProvider();
PharmacyModuleViewModel pharmacyModuleViewModel = PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
locator<PharmacyModuleViewModel>();
late LocationUtils locationUtils; late LocationUtils locationUtils;
bool isHomePage; bool isHomePage;
ProjectViewModel? projectViewModel; late ProjectViewModel projectViewModel;
ServicesView(this.hmgServices, this.index, this.isHomePage); ServicesView(this.hmgServices, this.index, this.isHomePage, this.projectViewModel);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context);
return InkWell( return InkWell(
onTap: () { onTap: () {
if (isHomePage) { if (isHomePage) {
@ -81,9 +73,7 @@ class ServicesView extends StatelessWidget {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: containerRadiusWithGradientServices(20, decoration: containerRadiusWithGradientServices(20, lightColor: CustomColors.lightGreyColor, darkColor: CustomColors.darkGreyColor),
lightColor: CustomColors.lightGreyColor,
darkColor: CustomColors.darkGreyColor),
child: Stack( child: Stack(
children: [ children: [
Container( Container(
@ -128,11 +118,7 @@ class ServicesView extends StatelessWidget {
Container( Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.only( padding: EdgeInsets.only(left: SizeConfig.widthMultiplier! * 3, right: SizeConfig.widthMultiplier! * 3, top: SizeConfig.widthMultiplier! * 3, bottom: SizeConfig.widthMultiplier! * 2),
left: SizeConfig.widthMultiplier! * 3,
right: SizeConfig.widthMultiplier! * 3,
top: SizeConfig.widthMultiplier! * 3,
bottom: SizeConfig.widthMultiplier! * 2),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -140,18 +126,12 @@ class ServicesView extends StatelessWidget {
hmgServices.action == (isHomePage ? 5 : 8) hmgServices.action == (isHomePage ? 5 : 8)
? Image.asset( ? Image.asset(
hmgServices.icon, hmgServices.icon,
height: index == 0 height: index == 0 ? MediaQuery.of(context).size.width / 18 : MediaQuery.of(context).size.width / 18,
? MediaQuery.of(context).size.width / 18
: MediaQuery.of(context).size.width / 18,
) )
: Container( : Container(
// color: Colors.yellow, // color: Colors.yellow,
width: index == 4 width: index == 4 ? MediaQuery.of(context).size.width / 12 : MediaQuery.of(context).size.width / 12,
? MediaQuery.of(context).size.width / 12 height: index == 4 ? MediaQuery.of(context).size.width / 10 : MediaQuery.of(context).size.width / 12,
: MediaQuery.of(context).size.width / 12,
height: index == 4
? MediaQuery.of(context).size.width / 10
: MediaQuery.of(context).size.width / 12,
child: SvgPicture.asset( child: SvgPicture.asset(
hmgServices.icon, hmgServices.icon,
// width: MediaQuery.of(context).size.width / 12, // width: MediaQuery.of(context).size.width / 12,
@ -190,6 +170,21 @@ class ServicesView extends StatelessWidget {
); );
} }
initPenguinSDK() async {
final bool permited = await AppPermission.askPenguinPermissions();
if (!permited) {
Map<Permission, PermissionStatus> statuses = await [
Permission.location,
Permission.bluetooth,
Permission.bluetoothConnect,
Permission.bluetoothScan,
Permission.activityRecognition,
].request().whenComplete(() {
PenguinMethodChannel.launch("penguin", projectViewModel.isArabic ? "ar" : "en", "1231755");
});
}
}
handleHomePageServices(HmgServices hmgServices, BuildContext context) { handleHomePageServices(HmgServices hmgServices, BuildContext context) {
if (hmgServices.action == 0) { if (hmgServices.action == 0) {
Navigator.push(context, FadePage(page: Search())); Navigator.push(context, FadePage(page: Search()));
@ -197,16 +192,15 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) { } else if (hmgServices.action == 1) {
openLiveCare(context); openLiveCare(context);
} else if (hmgServices.action == 2) { } else if (hmgServices.action == 2) {
Navigator.push(context, FadePage(page: ErOptions(isAppbar: true))); initPenguinSDK();
locator<GAnalytics>().hmgServices.logServiceName('emergency service'); // Navigator.push(context, FadePage(page: ErOptions(isAppbar: true)));
// locator<GAnalytics>().hmgServices.logServiceName('emergency service');
} else if (hmgServices.action == 3) { } else if (hmgServices.action == 3) {
Navigator.push(context, FadePage(page: HomeHealthCarePage())); Navigator.push(context, FadePage(page: HomeHealthCarePage()));
locator<GAnalytics>().hmgServices.logServiceName('home health care'); locator<GAnalytics>().hmgServices.logServiceName('home health care');
} else if (hmgServices.action == 4) { } else if (hmgServices.action == 4) {
Navigator.push(context, FadePage(page: CMCPage())); Navigator.push(context, FadePage(page: CMCPage()));
locator<GAnalytics>() locator<GAnalytics>().hmgServices.logServiceName('comprehensive medical checkup');
.hmgServices
.logServiceName('comprehensive medical checkup');
} else if (hmgServices.action == 5) { } else if (hmgServices.action == 5) {
Navigator.push(context, FadePage(page: PaymentService())); Navigator.push(context, FadePage(page: PaymentService()));
locator<GAnalytics>().hmgServices.logServiceName('online payments'); locator<GAnalytics>().hmgServices.logServiceName('online payments');
@ -222,44 +216,6 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 23) { } else if (hmgServices.action == 23) {
Navigator.push(context, FadePage(page: InPatientServicesHome())); Navigator.push(context, FadePage(page: InPatientServicesHome()));
locator<GAnalytics>().hmgServices.logServiceName('find us reach us'); locator<GAnalytics>().hmgServices.logServiceName('find us reach us');
} else if (hmgServices.action == 31) {
Navigator.push(context, FadePage(page: MedicalProfilePageNew()));
locator<GAnalytics>().hmgServices.logServiceName('my medical file');
} else if (hmgServices.action == 24 &&
projectViewModel?.havePrivilege(5) == true) {
Navigator.push(context, FadePage(page: MyAppointments()));
locator<GAnalytics>().hmgServices.logServiceName('my appointment');
} else if (hmgServices.action == 25) {
Navigator.push(context, FadePage(page: LabsHomePage()));
locator<GAnalytics>().hmgServices.logServiceName('lab result');
} else if (hmgServices.action == 26 &&
projectViewModel?.havePrivilege(7) == true) {
Navigator.push(context, FadePage(page: RadiologyHomePage()));
locator<GAnalytics>().hmgServices.logServiceName('radiology result');
} else if (hmgServices.action == 27 &&
projectViewModel?.havePrivilege(12) == true) {
Navigator.push(context, FadePage(page: HomePrescriptionsPage()));
locator<GAnalytics>().hmgServices.logServiceName('medicine prescription');
} else if (hmgServices.action == 28 &&
projectViewModel?.havePrivilege(25) == true) {
Navigator.push(
context,
FadePage(page: VitalSignDetailsScreen()),
);
locator<GAnalytics>().hmgServices.logServiceName('vital signs');
} else if (hmgServices.action == 29 &&
projectViewModel?.havePrivilege(48) == true) {
Navigator.push(context, FadePage(page: ActiveMedicationsPage()));
locator<GAnalytics>().hmgServices.logServiceName('active medication');
} else if (hmgServices.action == 30 &&
projectViewModel?.havePrivilege(6) == true) {
Navigator.push(
context,
FadePage(
page: DoctorHomePage(),
),
);
locator<GAnalytics>().hmgServices.logServiceName('active medication');
} }
} }
@ -277,9 +233,7 @@ class ServicesView extends StatelessWidget {
locator<GAnalytics>().hmgServices.logServiceName('home health care'); locator<GAnalytics>().hmgServices.logServiceName('home health care');
} else if (hmgServices.action == 4) { } else if (hmgServices.action == 4) {
Navigator.push(context, FadePage(page: CMCPage())); Navigator.push(context, FadePage(page: CMCPage()));
locator<GAnalytics>() locator<GAnalytics>().hmgServices.logServiceName('comprehensive medical checkup');
.hmgServices
.logServiceName('comprehensive medical checkup');
} else if (hmgServices.action == 5) { } else if (hmgServices.action == 5) {
// getPharmacyToken(context); // getPharmacyToken(context);
Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); Uri uri = Uri.parse(PHARMACY_REDIRECT_URL);
@ -333,10 +287,7 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 21) { } else if (hmgServices.action == 21) {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (BuildContext context) => MyWebView( builder: (BuildContext context) => MyWebView(title: "HMG News", selectedUrl: "https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
title: "HMG News",
selectedUrl:
"https://twitter.com/hmg" //"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
), ),
), ),
); );
@ -344,9 +295,6 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 22) { } else if (hmgServices.action == 22) {
Navigator.push(context, FadePage(page: ContactUsPage())); Navigator.push(context, FadePage(page: ContactUsPage()));
locator<GAnalytics>().hmgServices.logServiceName('find us reach us'); locator<GAnalytics>().hmgServices.logServiceName('find us reach us');
} else if (hmgServices.action == 31) {
Navigator.push(context, FadePage(page: MedicalProfilePageNew()));
locator<GAnalytics>().hmgServices.logServiceName('my medical file');
} }
// if (hmgServices.action == 10) { // if (hmgServices.action == 10) {
@ -480,8 +428,7 @@ class ServicesView extends StatelessWidget {
title: TranslationBase.of(context).covidConsentHeader, title: TranslationBase.of(context).covidConsentHeader,
message: TranslationBase.of(context).covidConsent, message: TranslationBase.of(context).covidConsent,
onTap: () async { onTap: () async {
Navigator.push( Navigator.push(context, FadePage(page: CovidDrivethruLocation()));
context, FadePage(page: CovidDrivethruLocation()));
}, },
)); ));
} else { } else {

@ -8,8 +8,6 @@ import 'package:diplomaticquarterapp/widgets/buttons/custom_text_button.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../theme/theme_value.dart';
class SliderView extends StatefulWidget { class SliderView extends StatefulWidget {
VoidCallback onLoginClick; VoidCallback onLoginClick;
@ -50,7 +48,7 @@ class _SliderViewState extends State<SliderView> {
children: [ children: [
mFlex(3), mFlex(3),
Container( Container(
decoration: projectViewModel.isArabic ? containerColorRadiusLeft(appColor, 100) : containerColorRadiusRight(appColor, 100), decoration: projectViewModel.isArabic ? containerColorRadiusLeft(Color(0xFFFBF2E31), 100) : containerColorRadiusRight(Color(0xFFFBF2E31), 100),
padding: EdgeInsets.only(left: projectViewModel.isArabic ? 16 : 20, right: projectViewModel.isArabic ? 20 : 16, top: 6, bottom: 6), padding: EdgeInsets.only(left: projectViewModel.isArabic ? 16 : 20, right: projectViewModel.isArabic ? 20 : 16, top: 6, bottom: 6),
child: Text( child: Text(
TranslationBase.of(context).medicalFile, TranslationBase.of(context).medicalFile,
@ -100,7 +98,7 @@ class _SliderViewState extends State<SliderView> {
child: CustomTextButton( child: CustomTextButton(
shape: cardRadiusNew(8), shape: cardRadiusNew(8),
//shape: OutlinedBorder(), //shape: OutlinedBorder(),
backgroundColor: appColor, backgroundColor: Color(0xFFFBF2E31),
elevation: 0, elevation: 0,
onPressed: () { onPressed: () {

@ -91,7 +91,7 @@ class _LiveCarePatmentPageState extends State<LiveCarePatmentPage> {
style: TextStyle( style: TextStyle(
fontSize: 16.0, fontSize: 16.0,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
letterSpacing: -0.66, letterSpacing: -0.66,
), ),
), ),
@ -255,7 +255,7 @@ class _LiveCarePatmentPageState extends State<LiveCarePatmentPage> {
fontSize: 12.0, fontSize: 12.0,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
), ),

@ -47,7 +47,7 @@ class _LiveCareHistoryCardState extends State<LiveCareHistoryCard> {
return Container( return Container(
margin: EdgeInsets.only(left: 12, right: 12, top: widget.isFirstOrLast == 0 ? 12 : 6, bottom: widget.isFirstOrLast == 1 ? 12 : 6), margin: EdgeInsets.only(left: 12, right: 12, top: widget.isFirstOrLast == 0 ? 12 : 6, bottom: widget.isFirstOrLast == 1 ? 12 : 6),
decoration: BoxDecoration( decoration: BoxDecoration(
color: CustomColors.primaryColor, color: CustomColors.accentColor,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(10.0), Radius.circular(10.0),
), ),

@ -63,7 +63,7 @@ class _State extends State<ClinicCard> {
), ),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
borderRadius: BorderRadius.all( borderRadius: BorderRadius.all(
Radius.circular(6.0), Radius.circular(6.0),
), ),
@ -110,7 +110,7 @@ class _State extends State<ClinicCard> {
width: 4, width: 4,
height: 4, height: 4,
decoration: containerRadius( decoration: containerRadius(
widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
100, 100,
), ),
), ),
@ -120,7 +120,7 @@ class _State extends State<ClinicCard> {
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.primaryColor, color: widget.patientERGetClinicsList.isOnline == 1 ? CustomColors.green : CustomColors.accentColor,
letterSpacing: -0.48, letterSpacing: -0.48,
), ),
), ),

@ -776,7 +776,7 @@ class _clinic_listState extends State<ClinicList> {
minWidth: MediaQuery.of(context).size.width * 0.7, minWidth: MediaQuery.of(context).size.width * 0.7,
height: 45.0, height: 45.0,
child: CustomTextButton( child: CustomTextButton(
backgroundColor: CustomColors.primaryColor, backgroundColor: CustomColors.accentColor,
disabledForegroundColor: Color(0xFFbcc2c4).withOpacity(0.38), disabledForegroundColor: Color(0xFFbcc2c4).withOpacity(0.38),
disabledBackgroundColor: Color(0xFFbcc2c4).withOpacity(0.12), disabledBackgroundColor: Color(0xFFbcc2c4).withOpacity(0.12),
elevation: 0, elevation: 0,

@ -109,7 +109,6 @@ class _ConfirmLogin extends State<ConfirmLogin> {
@override @override
void initState() { void initState() {
AppGlobal.context = context;
_getAvailableBiometrics(); _getAvailableBiometrics();
setDefault(); setDefault();
super.initState(); super.initState();
@ -308,7 +307,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
'assets/images/new/ic_logo.png', 'assets/images/habib-logo.png',
height: 90, height: 90,
width: 90, width: 90,
), ),

@ -4,7 +4,6 @@ import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/login/forgot-password.dart'; import 'package:diplomaticquarterapp/pages/login/forgot-password.dart';
import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/login.dart';
import 'package:diplomaticquarterapp/pages/login/register_new.dart'; import 'package:diplomaticquarterapp/pages/login/register_new.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/habib_logo_widget.dart'; import 'package:diplomaticquarterapp/widgets/habib_logo_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -69,26 +68,26 @@ class LoginType extends StatelessWidget {
], ],
), ),
), ),
// SizedBox( SizedBox(
// height: 43, height: 43,
// width: double.infinity, width: double.infinity,
// child: TextButton( child: TextButton(
// onPressed: () { onPressed: () {
// Navigator.of(context).push(FadePage(page: RegisterNew())); Navigator.of(context).push(FadePage(page: RegisterNew()));
// locator<GAnalytics>().loginRegistration.register_now(); locator<GAnalytics>().loginRegistration.register_now();
// }, },
// child: Text( child: Text(
// TranslationBase.of(context).registerNow, TranslationBase.of(context).registerNow,
// style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
// ), ),
// style: TextButton.styleFrom( style: TextButton.styleFrom(
// backgroundColor: appColor, backgroundColor: Color(0xffD02127),
// shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
// ), ),
// ), ),
// ), ),
// ), ),
]), ]),
), ),
); );

@ -10,7 +10,6 @@ import 'package:diplomaticquarterapp/pages/login/confirm-login.dart';
import 'package:diplomaticquarterapp/pages/login/login-type.dart'; import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/login.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -161,8 +160,7 @@ class _Register extends State<Register> {
child: DefaultButton(TranslationBase.of(context).cancel, () { child: DefaultButton(TranslationBase.of(context).cancel, () {
Navigator.of(context).pop(); Navigator.of(context).pop();
locator<GAnalytics>().loginRegistration.registration_cancel(step: 'enter details'); locator<GAnalytics>().loginRegistration.registration_cancel(step: 'enter details');
}, textColor: Colors.white, }, textColor: Colors.white, color: Color(0xffD02127))),
color: appColor)),
), ),
Expanded( Expanded(
child: Padding( child: Padding(

@ -84,7 +84,7 @@ class _WelcomeLogin extends State<WelcomeLogin> {
Navigator.of(context).push(FadePage(page: RegisterNew())), Navigator.of(context).push(FadePage(page: RegisterNew())),
locator<GAnalytics>().loginRegistration.visited_alhabib_group(false), locator<GAnalytics>().loginRegistration.visited_alhabib_group(false),
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
textColor: Colors.white, textColor: Colors.white,
), ),
), ),

@ -119,7 +119,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
() { () {
openResponseRateDialog(context); openResponseRateDialog(context);
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
], ],
@ -216,7 +216,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
rateDoctorResponse(); rateDoctorResponse();
} }
}, },
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
], ],
@ -303,7 +303,7 @@ class _ViewDoctorResponsesPageState extends State<ViewDoctorResponsesPage> {
decoration: InputDecoration( decoration: InputDecoration(
isDense: true, isDense: true,
hintText: _hintText, hintText: _hintText,
fillColor: CustomColors.primaryColor, fillColor: CustomColors.accentColor,
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: isEnable ? 14 : 24, fontSize: isEnable ? 14 : 24,
height: 21 / 14, height: 21 / 14,

@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_mod
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
@ -118,7 +117,7 @@ class _RequestTypePageState extends State<RequestTypePage> {
} }
}) })
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -10,7 +10,6 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -351,7 +350,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
}); });
projectViewModel.analytics.advancePayments.wallet_payment_details(); projectViewModel.analytics.advancePayments.wallet_payment_details();
}, },
color: appColor, color: Color(0xffD02127),
textColor: Colors.white, textColor: Colors.white,
disabledColor: Color(0xffEAEAEA), disabledColor: Color(0xffEAEAEA),
), ),

@ -329,7 +329,6 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel, payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
currency: projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR", currency: projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR",
onFailed: (failureResult) async { onFailed: (failureResult) async {
GifLoaderDialogUtils.hideDialog(context);
log("failureResult: ${failureResult.toString()}"); log("failureResult: ${failureResult.toString()}");
AppToast.showErrorToast(message: failureResult.toString()); AppToast.showErrorToast(message: failureResult.toString());
}, },

@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -207,7 +206,7 @@ class PrescriptionDetailsPageINP extends StatelessWidget {
return; return;
}, },
iconData: Icons.notifications_active, iconData: Icons.notifications_active,
color: appColor, color: Color(0xffD02127),
fontSize: 13.0, fontSize: 13.0,
//textColor: Color(0xff2B353E), //textColor: Color(0xff2B353E),
), ),

@ -9,7 +9,6 @@ import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
@ -234,7 +233,7 @@ class _PrescriptionDetailsPageState extends State<PrescriptionDetailsPage> {
} }
}, },
iconData: Icons.notifications_active, iconData: Icons.notifications_active,
color: appColor, color: Color(0xffD02127),
fontSize: 13.0, fontSize: 13.0,
//textColor: Color(0xff2B353E), //textColor: Color(0xff2B353E),
), ),

@ -95,7 +95,7 @@ class _RateAppointmentClinicState extends State<RateAppointmentClinic> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: <Widget>[ children: <Widget>[
MyRichText(TranslationBase.of(context).clinic + ":", model.appointmentDetails.projectName ?? "", projectViewModel.isArabic), MyRichText(TranslationBase.of(context).clinic + ":", model.appointmentDetails.projectName, projectViewModel.isArabic),
MyRichText(TranslationBase.of(context).date + ":", DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(model.appointmentDetails.appointmentDate)), MyRichText(TranslationBase.of(context).date + ":", DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(model.appointmentDetails.appointmentDate)),
projectViewModel.isArabic), projectViewModel.isArabic),
], ],

@ -54,9 +54,8 @@ class PayfortService extends BaseService {
"Pat_Token": result.tokenName, "Pat_Token": result.tokenName,
"IsRefund": false, "IsRefund": false,
"RemmeberMe": false, "RemmeberMe": false,
// "Reconciliation_Reference": result.reconciliationReference, "Reconciliation_Reference": result.reconciliationReference,
"LanguageID": 1, "LanguageID": 1,
"PatientID": patientID "PatientID": patientID
}; };
@ -177,7 +176,6 @@ class PayfortService extends BaseService {
merchantReference: merchantReference!, merchantReference: merchantReference!,
currency: currency, currency: currency,
customerIp: (await _info.getWifiIP() ?? ''), customerIp: (await _info.getWifiIP() ?? ''),
language: 'en'
); );
_payfort.callPayFortForApplePay( _payfort.callPayFortForApplePay(

@ -97,7 +97,7 @@ class _SplashScreenState extends State<SplashScreen> {
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 53), padding: EdgeInsets.symmetric(horizontal: 53),
child: Image.asset( child: Image.asset(
'assets/images/new/ic_logo.png', 'assets/images/new/hmg_logo.png',
fit: BoxFit.fitWidth, fit: BoxFit.fitWidth,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
), ),

@ -1,4 +1,3 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class CustomColors { class CustomColors {
@ -12,7 +11,6 @@ class CustomColors {
static const Color black = Color(0xFF141414); static const Color black = Color(0xFF141414);
static const Color white = Color(0xFFFFFFFF); static const Color white = Color(0xFFFFFFFF);
static const Color accentColor = Color(0xFFD02127); static const Color accentColor = Color(0xFFD02127);
static const Color primaryColor = appColor;
static const Color lightGreyColor = Color(0xFFE2E2E2); static const Color lightGreyColor = Color(0xFFE2E2E2);
static const Color devider = Color(0xFFE5E5E5); static const Color devider = Color(0xFFE5E5E5);
static const Color darkGreyColor = Color(0xFFC9C9C9); static const Color darkGreyColor = Color(0xFFC9C9C9);

@ -10,27 +10,13 @@ import 'package:flutter/services.dart';
final bluePrimary = Color(0xFF00000); final bluePrimary = Color(0xFF00000);
final blueAccent = Color(0xFFFF9800); final blueAccent = Color(0xFFFF9800);
final blueBackground = Color(0xFFFFFFFF); final blueBackground = Color(0xFFFFFFFF);
const MaterialColor appColor = MaterialColor(
0xFF045531,
<int, Color>{
50: Color(0xFFFFEBEE),
100: Color(0xFF2E6049),
200: Color(0xFF185339),
300: Color(0xFF125939),
400: Color(0xE6085734),
500: Color(0xFF045531),
600: Color(0xFF024024),
700: Color(0xFF034226),
800: Color(0xFF022C1A),
900: Color(0xFF011C10),
},
);
defaultTheme({fontName}) { defaultTheme({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
useMaterial3: false, useMaterial3: false,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
@ -74,7 +60,7 @@ invertThemes({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
useMaterial3: false, useMaterial3: false,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
@ -112,7 +98,7 @@ bwThemes({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
useMaterial3: false, useMaterial3: false,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
@ -127,14 +113,14 @@ bwThemes({fontName}) {
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
textTheme: TextTheme( textTheme: TextTheme(
bodyText1: TextStyle(color: appColor[900]), bodyText1: TextStyle(color: Colors.red[900]),
headline1: TextStyle(color: appColor[900]), headline1: TextStyle(color: Colors.red[900]),
headline2: TextStyle(color: Colors.white), headline2: TextStyle(color: Colors.white),
bodyText2: TextStyle(color: appColor[900]), bodyText2: TextStyle(color: Colors.red[900]),
subtitle1: TextStyle(color: appColor[900]), subtitle1: TextStyle(color: Colors.red[900]),
), ),
tabBarTheme: TabBarTheme(labelColor: appColor[900]), tabBarTheme: TabBarTheme(labelColor: Colors.red[900]),
disabledColor: Colors.grey[800], disabledColor: Colors.grey[800],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
@ -162,7 +148,7 @@ dimTheme({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: appColor, primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark, brightness: Brightness.dark,
useMaterial3: false, useMaterial3: false,

@ -7,9 +7,7 @@ import 'package:permission_handler/permission_handler.dart';
import 'PlatformBridge.dart'; import 'PlatformBridge.dart';
class AppPermission{ class AppPermission {
static Future<bool> askVideoCallPermission(BuildContext context) async { static Future<bool> askVideoCallPermission(BuildContext context) async {
if (!(await Permission.camera.request().isGranted) || !(await Permission.microphone.request().isGranted)) { if (!(await Permission.camera.request().isGranted) || !(await Permission.microphone.request().isGranted)) {
return false; return false;
@ -21,6 +19,30 @@ class AppPermission{
return true; return true;
} }
//
// Manifest.permission.INTERNET,
// Manifest.permission.ACCESS_FINE_LOCATION,
// Manifest.permission.ACCESS_COARSE_LOCATION,
// Manifest.permission.ACCESS_NETWORK_STATE,
// Manifest.permission.BLUETOOTH,
// Manifest.permission.BLUETOOTH_ADMIN,
// Manifest.permission.BLUETOOTH_SCAN,
// Manifest.permission.BLUETOOTH_CONNECT,
// Manifest.permission.HIGH_SAMPLING_RATE_SENSORS,
// Manifest.permission.ACTIVITY_RECOGNITION
static Future<bool> askPenguinPermissions() async {
if (!(await Permission.location.request().isGranted) ||
!(await Permission.bluetooth.request().isGranted) ||
!(await Permission.bluetoothScan.request().isGranted) ||
!(await Permission.bluetoothConnect.request().isGranted) ||
!(await Permission.activityRecognition.request().isGranted)) {
return false;
}
return true;
}
static Future _drawOverAppsMessageDialog(BuildContext context) async { static Future _drawOverAppsMessageDialog(BuildContext context) async {
ConfirmDialog dialog = new ConfirmDialog( ConfirmDialog dialog = new ConfirmDialog(
context: context, context: context,

@ -0,0 +1,29 @@
import 'package:flutter/services.dart';
class PenguinMethodChannel {
static const MethodChannel _channel = MethodChannel('launch_penguin_ui');
static Future<void> launch(String storyboardName, String languageCode, String username) async {
try {
await _channel.invokeMethod('launchPenguin', {
"storyboardName": storyboardName,
"baseURL": "https://hmg.nav.penguinin.com",
"dataURL": "https://hmg.nav.penguinin.com",
"positionURL": "https://hmg.nav.penguinin.com",
"dataServiceName": "api",
"positionServiceName": "pe",
"clientID": "HMG",
"username": username,
"isSimulationModeEnabled": false,
"isShowUserName": false,
"isUpdateUserLocationSmoothly": true,
"isEnableReportIssue": true,
"languageCode": languageCode,
"clientKey": "UGVuZ3VpbklOX1Blbk5hdl9QSUY=",
"mapBoxKey": "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
});
} on PlatformException catch (e) {
print("Failed to launch PenguinIn: '${e.message}'.");
}
}
}

@ -157,7 +157,7 @@ class TranslationBase {
String get welcomeTo => localizedValues['welcome-to'][locale.languageCode]; String get welcomeTo => localizedValues['welcome-to'][locale.languageCode];
String get kingKhalidUniversity => localizedValues['king-khalid-university'][locale.languageCode]; String get drSulaimanText => localizedValues['dr-sulaiman-text'][locale.languageCode];
String get patientApp => localizedValues['patient-app'][locale.languageCode]; String get patientApp => localizedValues['patient-app'][locale.languageCode];
@ -567,8 +567,6 @@ class TranslationBase {
String get myMedicalFile => localizedValues['MyMedicalFile'][locale.languageCode]; String get myMedicalFile => localizedValues['MyMedicalFile'][locale.languageCode];
String get myMedicalFiles => localizedValues['MyMedicalFiles'][locale.languageCode];
String get myMedicalFileSubTitle => localizedValues['myMedicalFileSubTitle'][locale.languageCode]; String get myMedicalFileSubTitle => localizedValues['myMedicalFileSubTitle'][locale.languageCode];
String get viewMore => localizedValues['viewMore'][locale.languageCode]; String get viewMore => localizedValues['viewMore'][locale.languageCode];
@ -2965,7 +2963,6 @@ class TranslationBase {
String get selectHospitalBloodDonation => localizedValues["selectHospitalBloodDonation"][locale.languageCode]; String get selectHospitalBloodDonation => localizedValues["selectHospitalBloodDonation"][locale.languageCode];
String get wecare => localizedValues["wecare"][locale.languageCode]; String get wecare => localizedValues["wecare"][locale.languageCode];
String get myinstructions => localizedValues["myinstructions"][locale.languageCode]; String get myinstructions => localizedValues["myinstructions"][locale.languageCode];
String get allServices => localizedValues["allServices"][locale.languageCode];
} }

File diff suppressed because it is too large Load Diff

@ -1,6 +1,4 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:gif_view/gif_view.dart'; import 'package:gif_view/gif_view.dart';
class GifLoaderContainer extends StatefulWidget { class GifLoaderContainer extends StatefulWidget {
@ -44,8 +42,9 @@ class _GifLoaderContainerState extends State<GifLoaderContainer> with TickerProv
//progress-loading.gif //progress-loading.gif
child: Container( child: Container(
// margin: EdgeInsets.only(bottom: 40), // margin: EdgeInsets.only(bottom: 40),
child: CircularProgressIndicator( child: GifView(
color: appColor, controller: controller,
image: AssetImage("assets/images/progress-loading-red.gif"), //NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"),
), ),
), ),
), ),

@ -57,15 +57,15 @@ class _BottomNavBarState extends State<BottomNavBar> {
currentIndex: 1, currentIndex: 1,
name: TranslationBase.of(context).medicalFile, name: TranslationBase.of(context).medicalFile,
), ),
// BottomNavigationItem( BottomNavigationItem(
// icon: "assets/images/new/bottom_nav/family_files.svg", icon: "assets/images/new/bottom_nav/family_files.svg",
// activeIcon: "assets/images/new/bottom_nav/family_files.svg", activeIcon: "assets/images/new/bottom_nav/family_files.svg",
// changeIndex: _changeIndex, changeIndex: _changeIndex,
// index: widget.index, index: widget.index,
// currentIndex: 3, currentIndex: 3,
// name: TranslationBase.of(context).myFamily, name: TranslationBase.of(context).myFamily,
// isDisabled: projectViewModel.isLoginChild, isDisabled: projectViewModel.isLoginChild,
// ), ),
if (widget.index == 0) if (widget.index == 0)
(widget.showHomeIcon) (widget.showHomeIcon)
? BottomNavigationItem( ? BottomNavigationItem(
@ -94,15 +94,15 @@ class _BottomNavBarState extends State<BottomNavBar> {
// currentIndex: 2, // currentIndex: 2,
// name: TranslationBase.of(context).bookAppo, // name: TranslationBase.of(context).bookAppo,
// ), // ),
// if (/*widget.index == 0 && */ projectViewModel.havePrivilege(34)) if (/*widget.index == 0 && */ projectViewModel.havePrivilege(34))
// BottomNavigationItem( BottomNavigationItem(
// icon: "assets/images/new/bottom_nav/todo.svg", icon: "assets/images/new/bottom_nav/todo.svg",
// activeIcon: "assets/images/new/bottom_nav/todo.svg", activeIcon: "assets/images/new/bottom_nav/todo.svg",
// changeIndex: _changeIndex, changeIndex: _changeIndex,
// index: widget.index, index: widget.index,
// currentIndex: 4, currentIndex: 4,
// name: TranslationBase.of(context).todoList, name: TranslationBase.of(context).todoList,
// ), ),
if (projectViewModel.havePrivilege(77)) if (projectViewModel.havePrivilege(77))
BottomNavigationItem( BottomNavigationItem(
icon: "assets/images/new/bottom_nav/help.svg", icon: "assets/images/new/bottom_nav/help.svg",

@ -1,8 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import '../../theme/theme_value.dart';
extension WithContainer on Widget { extension WithContainer on Widget {
Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this); Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this);
@ -23,7 +21,7 @@ class DefaultButton extends StatelessWidget {
final bool isTextExpanded; final bool isTextExpanded;
final int count; final int count;
DefaultButton(this.text, this.onPress, {this.color = appColor, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize}); DefaultButton(this.text, this.onPress, {this.color, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -73,7 +71,7 @@ class DefaultButton extends StatelessWidget {
], ],
), ),
style: TextButton.styleFrom( style: TextButton.styleFrom(
backgroundColor: color ?? appColor, backgroundColor: color ?? const Color(0xffD02127),
disabledForegroundColor: disabledColor, disabledForegroundColor: disabledColor,
disabledBackgroundColor: disabledColor, disabledBackgroundColor: disabledColor,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(

@ -1,12 +1,8 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../uitl/translations_delegate_base.dart';
/// FloatingButton widget /// FloatingButton widget
/// [onTap] button function /// [onTap] button function
/// [elevation] color elevation value /// [elevation] color elevation value
@ -74,42 +70,27 @@ class _FloatingButtonState extends State<FloatingButton>
child: AnimatedContainer( child: AnimatedContainer(
duration: Duration(milliseconds: 150), duration: Duration(milliseconds: 150),
margin: EdgeInsets.only(bottom: 4), margin: EdgeInsets.only(bottom: 4),
decoration: BoxDecoration(
child: Container( borderRadius: BorderRadius.all(Radius.circular(70.0)),
width: 100, color: Theme.of(context).primaryColor,
height: 100, boxShadow: [
decoration: BoxDecoration( BoxShadow(
// borderRadius: BorderRadius.all(Radius.circular(70.0)), color: Color.fromRGBO(
color: appColor, 120, 71, 80, widget.elevation ? 0.28 : 0.0),
shape: BoxShape.circle, spreadRadius:
_buttonSize < 1.0 ? -(1 - _buttonSize) * 50 : 0.0,
), offset: Offset(0, 7.0),
child: Padding( blurRadius: 70.0)
padding: const EdgeInsets.all(18), ]),
child: Column( child: Image.asset(
mainAxisSize: MainAxisSize.min, projectViewModel.isArabic
mainAxisAlignment: MainAxisAlignment.center, ? 'assets/images/book_appointment_ar.png'
children: [ : 'assets/images/appointment_booking_en.png',
SvgPicture.asset( // fit: BoxFit.cover,
"assets/images/new/book appointment.svg", width: 90,
width: 50, height: 90,
height: 30, ),
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn) )),
), ));
Text(
TranslationBase.of(context).book,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, color: Colors.white,),
), Text(
TranslationBase.of(context).appointmentLabel,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 8, fontWeight: FontWeight.w400, color: Colors.white,),
),
],
),
),
)
),
)));
} }
} }

@ -1,7 +1,6 @@
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
@ -97,7 +96,7 @@ class DoctorCard extends StatelessWidget {
: isLiveCareAppointment != null && isLiveCareAppointment == true : isLiveCareAppointment != null && isLiveCareAppointment == true
? Color(0xff2E303A) ? Color(0xff2E303A)
: isInOutPatient != null && isInOutPatient == false : isInOutPatient != null && isInOutPatient == false
? appColor ? Color(0xffD02127)
: Color(0xffa9a089), : Color(0xffa9a089),
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: projectViewModel!.isArabic ? Radius.circular(0) : Radius.circular(10), topLeft: projectViewModel!.isArabic ? Radius.circular(0) : Radius.circular(10),
@ -211,15 +210,15 @@ class DoctorCard extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],

@ -23,8 +23,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../theme/theme_value.dart';
class TimeLineView extends StatefulWidget { class TimeLineView extends StatefulWidget {
bool isLogged, isArabic; bool isLogged, isArabic;
List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList; List<AppoitmentAllHistoryResultList> appoitmentAllHistoryResultList;
@ -306,7 +304,7 @@ class _TimeLineViewState extends State<TimeLineView> {
child: CustomTextButton( child: CustomTextButton(
shape: cardRadiusNew(8), shape: cardRadiusNew(8),
elevation: 0, elevation: 0,
backgroundColor: appColor, backgroundColor: Color(0xFFFBF2E31),
onPressed: () { onPressed: () {
// onLoginClick(); // onLoginClick();
login(); login();

@ -105,58 +105,65 @@ class _AppDrawerState extends State<AppDrawer> {
child: ListView( child: ListView(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
children: <Widget>[ children: <Widget>[
InkWell( Container(
child: Padding( height: SizeConfig.screenHeight! * .30,
padding: const EdgeInsets.all(14.0), child: InkWell(
child: Column( child: Padding(
children: <Widget>[ padding: const EdgeInsets.all(14.0),
Container( child: Column(
width: double.infinity, children: <Widget>[
padding: EdgeInsets.only(top: 12), Container(
child: Row( width: double.infinity,
mainAxisAlignment: MainAxisAlignment.spaceBetween, padding: EdgeInsets.only(top: 12),
children: [ child: Row(
Image.asset( mainAxisAlignment: MainAxisAlignment.spaceBetween,
'assets/images/new/ic_logo.png', children: [
fit: BoxFit.fitWidth, SvgPicture.asset(
height: 60, "assets/images/new/logo.svg",
width: 60, height: 60,
), width: 60,
IconButton( ),
icon: Icon(Icons.clear), IconButton(
onPressed: () { icon: Icon(Icons.clear),
Navigator.pop(context); onPressed: () {
}, Navigator.pop(context);
) },
], )
],
),
), ),
), mHeight(12),
SizedBox( Container(
width: double.infinity, width: double.infinity,
// margin: EdgeInsets.only(top: 12), margin: EdgeInsets.only(top: 12),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text( Text(
(user != null && projectProvider!.isLogin) ? user!.firstName! + ' ' + user!.lastName! : TranslationBase.of(context).cantSeeProfile, (user != null && projectProvider!.isLogin) ? user!.firstName! + ' ' + user!.lastName! : TranslationBase.of(context).cantSeeProfile,
style: TextStyle(color: Color(0xff2E303A), fontWeight: FontWeight.bold, fontSize: 20, letterSpacing: -1.2, height: 35 / 20), style: TextStyle(color: Color(0xff2E303A), fontWeight: FontWeight.bold, fontSize: 20, letterSpacing: -1.2, height: 35 / 20),
),
Text(
(user != null && projectProvider!.isLogin)
? TranslationBase.of(context).fileNumber + ": " + user!.patientID.toString()
: TranslationBase.of(context).loginRegisterNow,
style: TextStyle(
color: Color(0xff2E303A),
fontSize: 16,
letterSpacing: -0.96,
height: 1,
), ),
), Text(
], (user != null && projectProvider!.isLogin)
? TranslationBase.of(context).fileNumber + ": " + user!.patientID.toString()
: TranslationBase.of(context).loginRegisterNow,
style: TextStyle(
color: Color(0xff2E303A),
fontSize: 16,
letterSpacing: -0.96,
height: 1,
),
),
mHeight(20.0),
(user != null && projectProvider!.isLogin)
? Image.network("https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${user!.patientID.toString()}", fit: BoxFit.fill, height: 73.5, width: 73.5)
: Container(),
],
),
), ),
), ],
], ),
), ),
), ),
), ),
@ -165,11 +172,11 @@ class _AppDrawerState extends State<AppDrawer> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
(user != null && projectProvider!.isLogin) (user != null && projectProvider!.isLogin)
? SizedBox.shrink() ? Container()
: InkWell( : InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).arabicChange, TranslationBase.of(context).arabicChange,
Image.asset('assets/images/lang.png'), Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.all(3)),
isImageIcon: true, isImageIcon: true,
bottomLine: false, bottomLine: false,
projectProvider: projectProvider, projectProvider: projectProvider,
@ -192,6 +199,139 @@ class _AppDrawerState extends State<AppDrawer> {
? Column( ? Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
(user!.isFamily == null || user!.isFamily == false)
? InkWell(
child: DrawerItem(TranslationBase.of(context).family, SvgPicture.asset("assets/images/new/family_files.svg"),
isImageIcon: true,
bottomLine: false,
textColor: Theme.of(context).textTheme.bodyText1!.color,
iconColor: Theme.of(context).textTheme.bodyText1!.color,
sideArrow: true,
letterSpacing: -0.84,
projectProvider: projectProvider),
onTap: () {
Navigator.of(context).pop();
Navigator.of(context).pushNamed(
MY_FAMILIY,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('my family');
},
)
: SizedBox(),
FutureBuilder(
future: getFamilyFiles(), // async work
builder: (BuildContext context, AsyncSnapshot<GetAllSharedRecordsByStatusResponse?> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator());
default:
if (snapshot.hasError)
return Padding(padding: EdgeInsets.all(10), child: Text(snapshot.error.toString()));
else
return Container(
child: Column(
children: [
user!.isFamily == true
? Container(
padding: EdgeInsets.only(bottom: 5, left: 4),
child: InkWell(
onTap: () {
switchUser(mainUser, context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: SvgPicture.asset("assets/images/new/family_files.svg"),
),
Expanded(
flex: 7,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
mainUser!.firstName! + ' ' + mainUser!.lastName!,
color: Color(0xff2E303A), //Theme.of(context).textTheme.bodyText1.color,
fontWeight: FontWeight.w600,
fontSize: 12,
letterSpacing: -0.33,
),
AppText(
TranslationBase.of(context).fileno + ": " + mainUser!.patientID.toString(),
color: Color(0xff989898),
fontSize: 12,
letterSpacing: -0.33,
),
Container(
height: 1,
margin: EdgeInsets.only(top: 7.5),
color: Color(0xffEDEDED),
),
],
),
),
],
),
),
)
: SizedBox(),
Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: snapshot.data!.getAllSharedRecordsByStatusList!.map<Widget>((result) {
return result.status == 3
? Container(
padding: EdgeInsets.only(bottom: 5),
child: InkWell(
onTap: () {
switchUser(result, context);
},
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Icon(Icons.person, color: result.responseID == user!.patientID ? Colors.transparent : Colors.transparent),
),
Expanded(
flex: 7,
child: Padding(
padding: EdgeInsets.only(left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
AppText(
result.patientName!,
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff2B353E),
fontWeight: FontWeight.w600,
fontSize: 11,
letterSpacing: -0.33,
),
AppText(
TranslationBase.of(context).fileno + ": " + result.responseID.toString(),
color: result.responseID == user!.patientID ? Color(0xffC5272D) : Color(0xff989898),
fontSize: 11,
letterSpacing: -0.33,
),
Divider(
color: Colors.grey[400],
),
],
),
),
),
],
),
),
)
: SizedBox();
}).toList())
],
));
}
},
),
mHeight(20),
InkWell( InkWell(
child: DrawerItem(TranslationBase.of(context).arabicChange, child: DrawerItem(TranslationBase.of(context).arabicChange,
Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.only(left: 3, right: 3, top: 3, bottom: projectProvider!.isArabic ? 3 : 0)), Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.only(left: 3, right: 3, top: 3, bottom: projectProvider!.isArabic ? 3 : 0)),
@ -228,7 +368,73 @@ class _AppDrawerState extends State<AppDrawer> {
// readQRCode(); // readQRCode();
// }, // },
// ), // ),
InkWell(
child: Stack(
children: [
DrawerItem(
TranslationBase.of(context).notification,
SvgPicture.asset("assets/images/new/notifications.svg"),
isImageIcon: true,
bottomLine: false,
letterSpacing: -0.84,
fontSize: 14,
projectProvider: projectProvider,
count: toDoProvider!.notificationsCount != "0" && !projectProvider!.isLoginChild
? new Container(
padding: EdgeInsets.all(4),
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: CustomColors.accentColor,
borderRadius: BorderRadius.circular(20),
),
constraints: BoxConstraints(
minWidth: 20,
minHeight: 20,
),
child: new Text(
toDoProvider!.notificationsCount.toString(),
style: new TextStyle(
color: Colors.white,
fontSize: projectProvider!.isArabic ? 8 : 9,
),
textAlign: TextAlign.center,
),
// ),
)
: SizedBox(),
),
],
),
onTap: () {
//NotificationsPage
// Navigator.of(context).pop();
if (!projectProvider!.isLoginChild) Navigator.push(context, FadePage(page: NotificationsPage()));
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('notifications');
},
),
if (projectProvider!.havePrivilege(3))
InkWell(
child: DrawerItem(TranslationBase.of(context).appsetting, SvgPicture.asset("assets/images/new/app_setting.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
onTap: () {
Navigator.of(context).pushNamed(
SETTINGS,
);
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('app settings');
},
),
InkWell(
child: DrawerItem(TranslationBase.of(context).rateApp, Icons.star, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
onTap: () {
openAppReviewDialog();
locator<GAnalytics>().hamburgerMenu.logMenuItemClick('rate our app');
// if (Platform.isIOS) {
// launchUrl(Uri.parse("https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978"));
// } else {
// launchUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en"));
// }
},
),
InkWell( InkWell(
child: DrawerItem(TranslationBase.of(context).logout, SvgPicture.asset("assets/images/new/logout.svg"), child: DrawerItem(TranslationBase.of(context).logout, SvgPicture.asset("assets/images/new/logout.svg"),
isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider), isImageIcon: true, bottomLine: false, letterSpacing: -0.84, fontSize: 14, projectProvider: projectProvider),
@ -245,21 +451,21 @@ class _AppDrawerState extends State<AppDrawer> {
login(); login();
}, },
), ),
// InkWell( InkWell(
// child: DrawerItem(TranslationBase.of(context).privacyPolicy, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false), child: DrawerItem(TranslationBase.of(context).privacyPolicy, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
// onTap: () { onTap: () {
// if (projectProvider!.isArabic) if (projectProvider!.isArabic)
// launch("https://hmg.com/ar/Pages/Privacy.aspx"); launch("https://hmg.com/ar/Pages/Privacy.aspx");
// else else
// launch("https://hmg.com/en/Pages/Privacy.aspx"); launch("https://hmg.com/en/Pages/Privacy.aspx");
// }, },
// ), ),
// InkWell( InkWell(
// child: DrawerItem(TranslationBase.of(context).termsConditions, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false), child: DrawerItem(TranslationBase.of(context).termsConditions, Icons.web, letterSpacing: -0.84, fontSize: 14, bottomLine: false),
// onTap: () { onTap: () {
// Navigator.of(context).push(FadePage(page: UserAgreementPage())); Navigator.of(context).push(FadePage(page: UserAgreementPage()));
// }, },
// ) )
], ],
)) ))
], ],

@ -1,4 +1,3 @@
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
@ -9,8 +8,8 @@ class HabibLogoWidget extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Row( return Row(
children: [ children: [
Image.asset( SvgPicture.asset(
'assets/images/new/ic_logo.png', "assets/images/new/hmg_icon.svg",
height: 62, height: 62,
width: 62, width: 62,
), ),
@ -26,12 +25,12 @@ class HabibLogoWidget extends StatelessWidget {
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12),
), ),
Text( Text(
TranslationBase.of(context).kingKhalidUniversity, TranslationBase.of(context).drSulaimanText,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
TranslationBase.of(context).patientApp, TranslationBase.of(context).patientApp,
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: appColor, letterSpacing: -0.72), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.72),
), ),
SizedBox(height: 2), SizedBox(height: 2),
], ],

@ -38,9 +38,9 @@ class MyInAppBrowser extends InAppBrowser {
static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL LIVE static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL LIVE
// static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL UAT // static String APPLE_PAY_PAYFORT_URL = 'https://hmgwebservices.com/PayFortWebLive/PayFortApi/MakeApplePayRequest'; // Payfort Payment Gateway URL UAT
static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT // static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT
// static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE
// static String SERVICE_URL = 'https://uat.hmgwebservices.com/payfortforvidaplus/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL UAT VIDA PLUS // static String SERVICE_URL = 'https://uat.hmgwebservices.com/payfortforvidaplus/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL UAT VIDA PLUS

@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart'
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -140,15 +139,15 @@ class DoctorHeader extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],
@ -179,7 +178,7 @@ class DoctorHeader extends StatelessWidget {
child: Container( child: Container(
padding: EdgeInsets.only(top: 10, bottom: 10, right: 15, left: 15), padding: EdgeInsets.only(top: 10, bottom: 10, right: 15, left: 15),
decoration: BoxDecoration( decoration: BoxDecoration(
color: appColor, borderRadius: projectViewModel.isArabic ? BorderRadius.only(topRight: Radius.circular(10)) : BorderRadius.only(topLeft: Radius.circular(10))), color: Color(0XFFD02127), borderRadius: projectViewModel.isArabic ? BorderRadius.only(topRight: Radius.circular(10)) : BorderRadius.only(topLeft: Radius.circular(10))),
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -305,15 +304,15 @@ class DoctorHeader extends StatelessWidget {
ratingWidget: RatingWidget( ratingWidget: RatingWidget(
full: Icon( full: Icon(
Icons.star, Icons.star,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
half: Icon( half: Icon(
Icons.star_half, Icons.star_half,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
empty: Icon( empty: Icon(
Icons.star_border, Icons.star_border,
color: CustomColors.primaryColor, color: CustomColors.accentColor,
), ),
), ),
unratedColor: Colors.grey[500], unratedColor: Colors.grey[500],

@ -1,8 +1,6 @@
import 'package:diplomaticquarterapp/core/enum/filter_type.dart'; import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../theme/theme_value.dart';
class MyTabView extends StatelessWidget { class MyTabView extends StatelessWidget {
final String title; final String title;
final FilterType value; final FilterType value;
@ -38,7 +36,7 @@ class MyTabView extends StatelessWidget {
Container( Container(
margin: EdgeInsets.only(top: 13), margin: EdgeInsets.only(top: 13),
height: 3, height: 3,
color: value == groupValue ? appColor : Colors.transparent, color: value == groupValue ? Color(0xffD02127) : Colors.transparent,
) )
], ],
), ),

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save