From a03d5c6d575d502910247d896f23084335d5fce5 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 30 Nov 2020 11:49:37 +0300 Subject: [PATCH 1/3] App initial release to stores --- android/app/build.gradle | 42 ++++-- android/app/google-services.json | 28 ++-- android/app/src/main/AndroidManifest.xml | 2 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 3287 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 1957 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 4315 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 7926 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 11608 bytes android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 4 +- ios/Flutter/.last_build_id | 2 +- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/GoogleService-Info.plist | 36 ----- ios/Podfile | 84 +++--------- .../xcshareddata/xcschemes/Runner.xcscheme | 10 +- .../xcshareddata/WorkspaceSettings.xcsettings | 2 + ios/Runner/AppDelegate.swift | 2 - .../AppIcon.appiconset/Contents.json | 123 +----------------- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 ---- .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - ios/Runner/Base.lproj/Main.storyboard | 13 +- ios/Runner/GoogleService-Info.plist | 36 ----- ios/Runner/Info.plist | 54 +++++--- key.properties | 2 +- lib/config/config.dart | 4 +- pubspec.yaml | 4 +- 44 files changed, 123 insertions(+), 357 deletions(-) delete mode 100644 ios/GoogleService-Info.plist delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 ios/Runner/GoogleService-Info.plist diff --git a/android/app/build.gradle b/android/app/build.gradle index 5d196986..faff5fa6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,6 +26,12 @@ apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + android { compileSdkVersion 30 @@ -34,7 +40,9 @@ android { } lintOptions { - disable 'InvalidPackage' +// disable 'InvalidPackage' + checkReleaseBuilds false + abortOnError false } defaultConfig { @@ -48,21 +56,35 @@ android { } + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + buildTypes { debug {} release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - staging { - // Specifies a sorted list of fallback build types that the - // plugin should try to use when a dependency does not include a - // "staging" build type. You may specify as many fallbacks as you - // like, and the plugin selects the first build type that's - // available in the dependency. - matchingFallbacks = ['debug', 'qa', 'release'] +// signingConfig signingConfigs.debug +// useProguard true + +// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + + signingConfigs.release } +// staging { +// // Specifies a sorted list of fallback build types that the +// // plugin should try to use when a dependency does not include a +// // "staging" build type. You may specify as many fallbacks as you +// // like, and the plugin selects the first build type that's +// // available in the dependency. +// matchingFallbacks = ['debug', 'qa', 'release'] +// } } } diff --git a/android/app/google-services.json b/android/app/google-services.json index f86832ad..a4655794 100644 --- a/android/app/google-services.json +++ b/android/app/google-services.json @@ -1,39 +1,37 @@ { "project_info": { - "project_number": "815750722565", - "firebase_url": "https://api-project-815750722565.firebaseio.com", - "project_id": "api-project-815750722565", - "storage_bucket": "api-project-815750722565.appspot.com" + "project_number": "864393916058", + "firebase_url": "https://diplomaticquarter-d2385.firebaseio.com", + "project_id": "diplomaticquarter-d2385", + "storage_bucket": "diplomaticquarter-d2385.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:815750722565:android:62281cd3e5df4063", + "mobilesdk_app_id": "1:864393916058:android:5b5a65cd6d8c18b4b97923", "android_client_info": { "package_name": "com.cloud.diplomaticquarterapp" } }, "oauth_client": [ { - "client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com", + "client_id": "864393916058-tphjrn8j39ntevt32ekcvmll8aue7qql.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { - "current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw" + "current_key": "AIzaSyBdV3mos1BPhUzNKCj2KANJtiO3o2zh9IM" } ], "services": { - "analytics_service": { - "status": 1 - }, "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 2 + "other_platform_oauth_client": [ + { + "client_id": "864393916058-tphjrn8j39ntevt32ekcvmll8aue7qql.apps.googleusercontent.com", + "client_type": 3 + } + ] } } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index d0751535..12ced804 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -24,7 +24,7 @@ android:name="io.flutter.app.FlutterApplication" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" - android:label="diplomaticquarterapp"> + android:label="Dr. Alhabib MC"> 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 Vd9uLGJ)-~s002ovPDHLkV1ljaHBbNm literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..a35f0ed789cd85017f50cff69ef39c384dbb7d4f 100644 GIT binary patch delta 1954 zcmV;T2VMBO1Emj;8Gi-<00374`G)`i2W&}1K~!i%)mnLM6jd1i&E5+=u;r*gRVso} zj6e}em5NZV7OJ9uNNYSu@W7ZDgF&Mvg7J#P7?DK97!3lYEefRwK{;Al39*F|3KWnY zVks0z?{0UyyJNn&_RZ|6?>1YX@$pE5i39wiXjY0Mnb*kX{R04e(iCN)o+ipnzxYWl zpXWJnjSm0758IYz{zNjh0QCS^3(EfZu8%iA&4d0)7eBc2Dg~t*SuNqO>KP+XkgWqi z8c#|N;d~oQmw(QD1ppaGxwHUGPi*-u-xr^>NfsY=VbY1Qe!wGv1!4h!WRRlPuJ&bn zpI=Y}g%9F$_Od@-QdP>^9rIQ03}JmTS~$xE=pc;>>BYcmp}h!jp8mc2mt{Q$z%47S z1rYb>_9Hc%%{E~$>Ih5fSzm`L3d{%qh{jRJ9q;Ksb$@VK)(il>dH@Jad|pXa4QF?Z zXCq24a0jzKYg0XAsGqUE0;Y^eK&RV_3!Qz88a(`NSN);<*#w|ljwsdx^f_TkNmaGU zCIVm;PqbN-dyWG*=1X=QE$ro);Fn3pi+oMATS4>v@)(AO4vQI&j7>tp#L;-I;tbBU z_c1yc1%FUnRc*36#xdG7LLq4>tBFHV4goM$xIeCLKt)Tt;6pi!rN%q(_1sBeD<^9cEdU{< z8=_EgRkaL2whwtA5&#=c{Ds|3S5*KW7?p^%Gk@<2={fBeY5<}k_WqXW>USf9j11K@0j7{szC4FOopctB18M4{qb;}jA-5CA~dn;xMDUf5rU3!Sb2 z019@Z&|n@=05I8sJW!lF#c&J|fU>4GRqGHv0Hz2U0#HO0vWsms&Ou_4?kbHf<782yPN}#w05AmTWx)z4j2W%NxhKP zTI{Q`hwhZQM9?LlKcJJyIj&DR3TD?uN~JZvI}8h?OV z@qkF#LsTQ;tQJG`UUKQ2Y!WFcGGva}T+r$_MR$8MtW11}s@5e0;YeWEO zFOgeX1CLK!NpJI`er}LL1VG))se5(JYQn->qX0m17VoS315U*;SVZ1$$3mK-twvxycBH<`ac99x!tp zb}X3+vbd3JeQgs;rDjeZPtDv1I#dfKZ~3n$gS=qK16ly&32NpD00A*_eNo$lT?_!K zvNKX513;DhY`gOIL`;50J%0d=2ciYQzB0XG0On~a!~-^S;1A6H;<^Zw_DTvkWG*M`0Ub^uZkN~im?0*G7 z*{3uD0G}UM2QgKH=_!f$D08Bb93YH|nnKxy<<;6CrhdMR02oZ8?|&XSkKbE6nC2Kr zOK{@b?EC(E0CNhr3YRuYSdtp>&fdqSarA_KKA{n#3g#Mm8sKGu;OG{ zFCRP|T^f}Eu)8r@AY8M?I;Pj_6O^xBM678N3V)63O3UG+s|pI>al0AJBhuZSn1B761SM07*qoM6N<$g8A5c?f?J) literal 442 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 JPDHLkV1l(q`MLlA literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..fc595a387b91d6c5bc60f062c8b9a684efbc5ccb 100644 GIT binary patch literal 7926 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 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..605c7e4a7772aba3eca43f602084b513da944907 100644 GIT binary patch literal 11608 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 diff --git a/android/build.gradle b/android/build.gradle index 8e56476b..8c57e18a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:3.6.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.2' } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 5660070d..5ffeb56f 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Sep 03 16:26:30 EEST 2020 +#Wed Nov 25 14:25:50 AST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index 44c4b26c..b5ed87ba 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -da98d9f0c1f407e541c636e84847ac81 \ No newline at end of file +a30437b5671472a3d6a8672edcfc504b \ No newline at end of file diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f78..f2872cf4 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/ios/GoogleService-Info.plist b/ios/GoogleService-Info.plist deleted file mode 100644 index 0c093a2a..00000000 --- a/ios/GoogleService-Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CLIENT_ID - 864393916058-ekeb4s8tgfo58dutv0l54399t7ivr06r.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.864393916058-ekeb4s8tgfo58dutv0l54399t7ivr06r - API_KEY - AIzaSyA_6ayGCk4fly7o7eTVBrj9kuHBYHMAOfs - GCM_SENDER_ID - 864393916058 - PLIST_VERSION - 1 - BUNDLE_ID - com.cloud.diplomaticquarterapp - PROJECT_ID - diplomaticquarter-d2385 - STORAGE_BUCKET - diplomaticquarter-d2385.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:864393916058:ios:13f787bbfe6051f8b97923 - DATABASE_URL - https://diplomaticquarter-d2385.firebaseio.com - - \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index c2702b3e..1d1a003e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -10,82 +10,32 @@ project 'Runner', { 'Release' => :release, } -# pod 'FBSDKCoreKit' -# pod 'FBSDKLoginKit' - -def parse_KV_file(file, separator='=') - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return []; +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" end - generated_key_values = {} - skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) do |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - generated_key_values[podname] = podpath - else - puts "Invalid plugin specification: #{line}" - end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches end - generated_key_values + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" end +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + target 'Runner' do use_frameworks! use_modular_headers! - # Flutter Pod - - copied_flutter_dir = File.join(__dir__, 'Flutter') - copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') - copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') - unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) - # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. - # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. - # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. - - generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') - unless File.exist?(generated_xcode_build_settings_path) - raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) - cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; - - unless File.exist?(copied_framework_path) - FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) - end - unless File.exist?(copied_podspec_path) - FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) - end - end - - # Keep pod path relative so it can be checked into Podfile.lock. - pod 'Flutter', :path => 'Flutter' - - # Plugin Pods - - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock - # referring to absolute paths on developers' machines. - system('rm -rf .symlinks') - system('mkdir -p .symlinks/plugins') - plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.each do |name, path| - symlink = File.join('.symlinks', 'plugins', name) - File.symlink(path, symlink) - pod name, :path => File.join(symlink, 'ios') - end + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end post_install do |installer| installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['ENABLE_BITCODE'] = 'NO' - end + flutter_additional_ios_build_settings(target) end -end - +end \ No newline at end of file diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..31d8d1f5 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ - - - - + + - - + DisableBuildSystemDeprecationWarning + PreviewsEnabled diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 23dd69b8..70693e4a 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,6 +1,5 @@ import UIKit import Flutter -import GoogleMaps @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { @@ -8,7 +7,6 @@ import GoogleMaps _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { - GMSServices.provideAPIKey("AIzaSyCiiJiHkocPbcziHt9O8rGWavDrxHRQys8") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..65b74d7e 100644 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"}]} \ No newline at end of file diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0bca859a3f474b03065bef75ba58a9e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7edb86cdfe0d15b4b0d98334a86163658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5cee1c98386d13b17e89f719e83555b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b..00000000 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard index 00abc512..f3c28516 100644 --- a/ios/Runner/Base.lproj/Main.storyboard +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -1,10 +1,8 @@ - - - + + - - + @@ -16,14 +14,13 @@ - + - + - diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist deleted file mode 100644 index 0c093a2a..00000000 --- a/ios/Runner/GoogleService-Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CLIENT_ID - 864393916058-ekeb4s8tgfo58dutv0l54399t7ivr06r.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.864393916058-ekeb4s8tgfo58dutv0l54399t7ivr06r - API_KEY - AIzaSyA_6ayGCk4fly7o7eTVBrj9kuHBYHMAOfs - GCM_SENDER_ID - 864393916058 - PLIST_VERSION - 1 - BUNDLE_ID - com.cloud.diplomaticquarterapp - PROJECT_ID - diplomaticquarter-d2385 - STORAGE_BUCKET - diplomaticquarter-d2385.appspot.com - IS_ADS_ENABLED - - IS_ANALYTICS_ENABLED - - IS_APPINVITE_ENABLED - - IS_GCM_ENABLED - - IS_SIGNIN_ENABLED - - GOOGLE_APP_ID - 1:864393916058:ios:13f787bbfe6051f8b97923 - DATABASE_URL - https://diplomaticquarter-d2385.firebaseio.com - - \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index b807d9c6..6a2a87ce 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -4,6 +4,8 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Dr. Alhabib MC CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -11,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - diplomaticquarterapp + DiplomaticQuarter CFBundlePackageType APPL CFBundleShortVersionString @@ -22,27 +24,47 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS - io.flutter.embedded_views_preview - + NSBluetoothAlwaysUsageDescription + This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data. + NSBluetoothPeripheralUsageDescription + This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data. + NSCalendarsUsageDescription + This app requires calendar access to set reminders for Virtual & Normal Appointments. + NSCameraUsageDescription + This app requires camera access to enable virtual consultation between patient & doctor + NSContactsUsageDescription + This app requires contacts access to show incoming virtual consultation request. + NSFaceIDUsageDescription + This app requires Face ID to allow biometric authentication for app login. + NSLocationAlwaysAndWhenInUseUsageDescription + This App requires access to your location to show the nearest hospitals & ER Locations from your location. + NSLocationAlwaysUsageDescription + This App requires access to your location to show the nearest hospitals from your location. + NSLocationWhenInUseUsageDescription + This App requires access to your location to show the nearest hospitals from your location. + NSMicrophoneUsageDescription + This app requires microphone access to enable virtual consultation between patient & doctor + NSMotionUsageDescription + This app requires motion detection access to function properly. + NSPhotoLibraryUsageDescription + This app requires photo library access to select image as document & upload it. + NSRemindersUsageDescription + This app requires calendar access to set reminders for Virtual & Normal Appointments. + NSSpeechRecognitionUsageDescription + This app requires access to speech recognition to identify which words are spoken into the microphone. + NSAppleMusicUsageDescription + Required usage description for a Flutter dependency + UIBackgroundModes + + remote-notification + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main - NSMicrophoneUsageDescription - Need microphone access for uploading videos - NSCameraUsageDescription - Need camera access for uploading images - NSLocationUsageDescription - Need location access for updating nearby friends - NSLocationWhenInUseUsageDescription - This app will use your location to show cool stuffs near you. - NSPhotoLibraryUsageDescription - Need photo library access for uploading images UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad @@ -53,5 +75,7 @@ UIViewControllerBasedStatusBarAppearance + io.flutter.embedded_views_preview + diff --git a/key.properties b/key.properties index 01c8cbe8..eec491b8 100644 --- a/key.properties +++ b/key.properties @@ -1,4 +1,4 @@ storePassword=HmGsa123 keyPassword=HmGsa123 -keyAlias=DQKey +keyAlias=key storeFile=DQKey.jks \ No newline at end of file diff --git a/lib/config/config.dart b/lib/config/config.dart index 37da28b4..55845a3d 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -7,8 +7,8 @@ import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; const MAX_SMALL_SCREEN = 660; - const BASE_URL = 'https://uat.hmgwebservices.com/'; -// const BASE_URL = 'https://hmgwebservices.com/'; + // const BASE_URL = 'https://uat.hmgwebservices.com/'; +const BASE_URL = 'https://hmgwebservices.com/'; const GET_PROJECT = 'Services/Lists.svc/REST/GetProject'; ///Doctor diff --git a/pubspec.yaml b/pubspec.yaml index 26fafc7f..4f21803d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: diplomaticquarterapp description: A new Flutter application. -version: 1.0.0+1 +version: 1.0.4+5 environment: sdk: ">=2.6.0 <3.0.0" @@ -150,7 +150,7 @@ dependencies: # recase: ^3.0.0 wakelock: ^0.1.4 after_layout: ^1.0.7 - twilio_programmable_video: ^0.5.0+3 + twilio_programmable_video: ^0.6.3+1 flutter_tts: ^1.2.6 vibration: ^1.7.2 speech_to_text: From 7edb0c8009489b39cb081254d9036b6a53c12c43 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 3 Dec 2020 16:42:04 +0300 Subject: [PATCH 2/3] Doctor rating dialog revamped --- lib/config/config.dart | 2 + lib/config/localized_values.dart | 28 ++ lib/core/service/client/base_app_client.dart | 6 +- .../Appointments/DoctorRateDetails.dart | 32 ++ lib/pages/BookAppointment/DoctorProfile.dart | 311 +++++++++++++++++- .../medical/labs/laboratory_result_page.dart | 3 +- .../appointment_services/GetDoctorsList.dart | 66 ++++ lib/uitl/translations_delegate_base.dart | 8 +- 8 files changed, 437 insertions(+), 19 deletions(-) create mode 100644 lib/models/Appointments/DoctorRateDetails.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 55845a3d..cea61bdb 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -15,6 +15,8 @@ const GET_PROJECT = 'Services/Lists.svc/REST/GetProject'; const GET_MY_DOCTOR = 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; const GET_DOCTOR_PROFILE = 'Services/Doctors.svc/REST/GetDocProfiles'; +const GET_DOCTOR_RATING_NOTES = 'Services/Doctors.svc/REST/dr_GetNotesDoctorRating'; +const GET_DOCTOR_RATING_DETAILS = 'Services/Doctors.svc/REST/dr_GetDoctorRatingDetails'; const GET_DOCTOR_RATING = 'Services/Doctors.svc/REST/dr_GetAvgDoctorRating'; ///Prescriptions diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index b8e9c9c0..2ffe8f1b 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1043,5 +1043,33 @@ const Map localizedValues = { "en": "Survey", "ar": "إستبيان" }, + "labResults": { + "en": "Lab Result", + "ar": "نتيجة المختبر" + }, + "doctorRating": { + "en": "Doctor Rating", + "ar": "تقييم الطبيب" + }, + "good": { + "en": "Good", + "ar": "جيد" + }, + "v-good": { + "en": "Very Good", + "ar": "جيد جدا" + }, + "excellent": { + "en": "Excellent", + "ar": "ممتاز" + }, + "average": { + "en": "Average", + "ar": "متوسط" + }, + "below-average": { + "en": "Below Average", + "ar": "أقل من المتوسط" + }, }; diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 60142fc6..e288ccb3 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -54,9 +54,9 @@ class BaseAppClient { : languageID == 'ar' ? 1 : 2 - : languageID == 'ar' - ? 1 - : 2; + : languageID == 'en' + ? 2 + : 1; body['IPAdress'] = IP_ADDRESS; body['generalid'] = GENERAL_ID; diff --git a/lib/models/Appointments/DoctorRateDetails.dart b/lib/models/Appointments/DoctorRateDetails.dart new file mode 100644 index 00000000..b29a5db9 --- /dev/null +++ b/lib/models/Appointments/DoctorRateDetails.dart @@ -0,0 +1,32 @@ +class DoctorRateDetails { + dynamic doctorID; + dynamic projectID; + dynamic clinicID; + dynamic rate; + dynamic patientNumber; + + DoctorRateDetails( + {this.doctorID, + this.projectID, + this.clinicID, + this.rate, + this.patientNumber}); + + DoctorRateDetails.fromJson(Map json) { + doctorID = json['DoctorID']; + projectID = json['ProjectID']; + clinicID = json['ClinicID']; + rate = json['Rate']; + patientNumber = json['PatientNumber']; + } + + Map toJson() { + final Map data = new Map(); + data['DoctorID'] = this.doctorID; + data['ProjectID'] = this.projectID; + data['ClinicID'] = this.clinicID; + data['Rate'] = this.rate; + data['PatientNumber'] = this.patientNumber; + return data; + } +} diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart index 6864e6b1..94386465 100644 --- a/lib/pages/BookAppointment/DoctorProfile.dart +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -1,11 +1,14 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; +import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/routes.dart'; +import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -42,6 +45,8 @@ class _DoctorProfileState extends State AppSharedPreferences sharedPref = AppSharedPreferences(); + List doctorDetailsList = List(); + @override void initState() { _tabController = new TabController( @@ -150,19 +155,26 @@ class _DoctorProfileState extends State emptyIcon: Icons.star, ), ), - Container( - margin: EdgeInsets.only(top: 5.0), - alignment: Alignment.center, - child: Text( - "(" + - widget.doctor.noOfPatientsRate.toString() + - " " + TranslationBase.of(context).reviews + ")", - style: TextStyle( - fontSize: 14.0, - color: Colors.blue[800], - letterSpacing: 1.0, - decoration: TextDecoration.underline, - )), + InkWell( + onTap: () { + getDoctorRatingsDetails(); + }, + child: Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: Text( + "(" + + widget.doctor.noOfPatientsRate.toString() + + " " + + TranslationBase.of(context).reviews + + ")", + style: TextStyle( + fontSize: 14.0, + color: Colors.blue[800], + letterSpacing: 1.0, + decoration: TextDecoration.underline, + )), + ), ), Container( margin: EdgeInsets.only(top: 10.0), @@ -213,6 +225,279 @@ class _DoctorProfileState extends State ); } + getDoctorRatings() { + GifLoaderDialogUtils.showMyDialog(context); + DoctorsListService service = new DoctorsListService(); + service.getDoctorsRating(widget.doctor.doctorID, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + print(res['NotesDoctorRatingList']); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + print(err); + }); + } + + getDoctorRatingsDetails() { + GifLoaderDialogUtils.showMyDialog(context); + DoctorsListService service = new DoctorsListService(); + service + .getDoctorsRatingDetails(widget.doctor.doctorID, context) + .then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + doctorDetailsList.clear(); + res['DoctorRatingDetailsList'].forEach((v) { + doctorDetailsList.add(new DoctorRateDetails.fromJson(v)); + }); + showRatingDialog(doctorDetailsList); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + print(err); + }); + } + + void showRatingDialog(List doctorDetailsList) { + showGeneralDialog( + barrierColor: Colors.black.withOpacity(0.5), + transitionBuilder: (context, a1, a2, widget) { + final curvedValue = Curves.easeInOutBack.transform(a1.value) - 1.0; + return Transform( + transform: Matrix4.translationValues(0.0, curvedValue * 200, 0.0), + child: Opacity( + opacity: a1.value, + child: Dialog( + child: Container( + height: 400.0, + width: MediaQuery.of(context).size.width * 0.8, + color: Colors.white, + child: Column( + children: [ + Container( + alignment: Alignment.center, + width: MediaQuery.of(context).size.width, + color: Theme.of(context).primaryColor, + margin: EdgeInsets.only(bottom: 5.0), + padding: EdgeInsets.all(10.0), + child: Text(TranslationBase.of(context).doctorRating, + style: TextStyle( + fontSize: 22.0, color: Colors.white))), + Container( + margin: EdgeInsets.only(top: 0.0), + child: Text( + this + .widget + .doctor + .actualDoctorRate + .ceilToDouble() + .toString(), + style: TextStyle( + fontSize: 32.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 5.0), + alignment: Alignment.center, + child: RatingBar.readOnly( + initialRating: + this.widget.doctor.actualDoctorRate.toDouble(), + size: 35.0, + filledColor: Colors.yellow[700], + emptyColor: Colors.grey[500], + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star, + ), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Text( + this.widget.doctor.noOfPatientsRate.toString() + + " " + + TranslationBase.of(context).reviews, + style: TextStyle( + fontSize: 14.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only( + top: 10.0, left: 15.0, right: 15.0), + child: Text( + TranslationBase.of(context).excellent, + style: TextStyle( + fontSize: 13.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: SizedBox( + width: getRatingWidth( + doctorDetailsList[0].patientNumber), + height: 6.0, + child: Container( + color: Colors.green[700], + ), + ), + ), + ], + ), + ), + Container( + child: Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only( + top: 10.0, left: 15.0, right: 15.0), + child: Text(TranslationBase.of(context).v_good, + style: TextStyle( + fontSize: 13.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: SizedBox( + width: getRatingWidth( + doctorDetailsList[1].patientNumber), + height: 6.0, + child: Container( + color: Color(0xffB7B723), + ), + ), + ), + ], + ), + ), + Container( + child: Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only( + top: 10.0, left: 15.0, right: 15.0), + child: Text(TranslationBase.of(context).good, + style: TextStyle( + fontSize: 13.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: SizedBox( + width: getRatingWidth( + doctorDetailsList[2].patientNumber), + height: 6.0, + child: Container( + color: Color(0xffEBA727), + ), + ), + ), + ], + ), + ), + Container( + child: Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only( + top: 10.0, left: 15.0, right: 15.0), + child: Text(TranslationBase.of(context).average, + style: TextStyle( + fontSize: 13.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: SizedBox( + width: getRatingWidth( + doctorDetailsList[3].patientNumber), + height: 6.0, + child: Container( + color: Color(0xffEB7227), + ), + ), + ), + ], + ), + ), + Container( + child: Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only( + top: 10.0, left: 15.0, right: 15.0), + child: Text( + TranslationBase.of(context).below_average, + style: TextStyle( + fontSize: 13.0, color: Colors.black))), + Container( + margin: EdgeInsets.only(top: 10.0), + child: SizedBox( + width: getRatingWidth( + doctorDetailsList[4].patientNumber), + height: 6.0, + child: Container( + color: Color(0xffE20C0C), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.only(top: 40.0), child: Divider()), + Container( + margin: EdgeInsets.only(top: 0.0), + child: Align( + alignment: FractionalOffset.bottomCenter, + child: ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width, + height: 40.0, + child: RaisedButton( + elevation: 0.0, + color: Colors.white, + textColor: Colors.red, + hoverColor: Colors.transparent, + focusColor: Colors.transparent, + highlightColor: Colors.transparent, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text(TranslationBase.of(context).cancel, + style: TextStyle(fontSize: 18.0)), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + }, + transitionDuration: Duration(milliseconds: 500), + barrierDismissible: true, + barrierLabel: '', + context: context, + pageBuilder: (context, animation1, animation2) {}); + } + + double getRatingWidth(int patientNumber) { + print(patientNumber); + print(this.widget.doctor.noOfPatientsRate); + var width = (patientNumber / this.widget.doctor.noOfPatientsRate) * 100; + print(width); + return width; + } + getPatientData() async { if (await sharedPref.getObject(USER_PROFILE) != null) { var data = diff --git a/lib/pages/medical/labs/laboratory_result_page.dart b/lib/pages/medical/labs/laboratory_result_page.dart index 01cb6725..9b1f5a26 100644 --- a/lib/pages/medical/labs/laboratory_result_page.dart +++ b/lib/pages/medical/labs/laboratory_result_page.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/labs_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/laboratory_result_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; @@ -21,7 +22,7 @@ class LaboratoryResultPage extends StatelessWidget { orderNo: patientLabOrders.orderNo), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Laboratory result', + appBarTitle: TranslationBase.of(context).labResults, baseViewModel: model, body: Scaffold( body: ListView.builder( diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index 579c0e10..a320cf6b 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -177,6 +177,72 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } + Future getDoctorsRating( + int docID, context) async { + Map request; + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": authUser.outSA, + "TokenID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null, + "doctorID": docID, + "PatientID": 0, + "License": true, + "IsRegistered": true, + "isDentalAllowedBackend": false + }; + + dynamic localRes; + + await baseAppClient.post(GET_DOCTOR_RATING_NOTES, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + + Future getDoctorsRatingDetails( + int docID, context) async { + Map request; + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": authUser.outSA, + "TokenID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null, + "DoctorID": docID, + "PatientID": 0, + "License": true, + "IsRegistered": true, + "isDentalAllowedBackend": false + }; + + dynamic localRes; + + await baseAppClient.post(GET_DOCTOR_RATING_DETAILS, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + Future getDoctorFreeSlots( int docID, int clinicID, int projectID, BuildContext context) async { Map request; diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index ab32218e..b94c3953 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -867,8 +867,12 @@ String get fileno => localizedValues['fileno'][locale.languageCode]; String get openRad => localizedValues['open-rad'][locale.languageCode]; String get sendCopyRad => localizedValues['send-copy'][locale.languageCode]; String get appoSurvey => localizedValues['appoSurvey'][locale.languageCode]; - - + String get labResults => localizedValues['labResults'][locale.languageCode]; + String get doctorRating => localizedValues['doctorRating'][locale.languageCode]; + String get good => localizedValues['good'][locale.languageCode]; + String get v_good => localizedValues['v-good'][locale.languageCode]; + String get excellent => localizedValues['excellent'][locale.languageCode]; + String get below_average => localizedValues['below-average'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { From f1a8e09a59a52882d276fcaaa4255366f873520c Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 3 Dec 2020 17:20:34 +0300 Subject: [PATCH 3/3] Added info images description --- lib/config/localized_values.dart | 17 +++++++++- lib/pages/MyAppointments/MyAppointments.dart | 7 ++++ lib/pages/ToDoList/ToDo.dart | 33 ++++++++++++++++--- .../medical/balance/advance_payment_page.dart | 6 ++++ .../medical/balance/my_balance_page.dart | 7 ++++ lib/uitl/translations_delegate_base.dart | 5 ++- 6 files changed, 69 insertions(+), 6 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index d4fb4c19..fc2d6947 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1071,10 +1071,25 @@ const Map localizedValues = { "en": "Below Average", "ar": "أقل من المتوسط" }, - "info-signs": { "en": "This service allows you to view all vital signs were performed in the Habib Medical Group, e.x (height, weight, body mass index, heart rate, etc.) as well shows some statistics charts.", "ar": "خدمة المؤشرات الحيوية: هذه الخدمة تمكنك من الاطلاع على جميع المؤشرات الحيوية على سبيل المثال (الطول، الوزن، مؤشر كتلة الجسم، معدل نبضات القلب الخ..) التي تمت في مجموعة الحبيب الطبية وكذلك رسوم بيانية على مستوى المؤشر." }, + "info-my-appointments": { + "en": "This service allows you to see all the appointment you have visited in Al Habib Medical Group, and through this service:", + "ar": "خدمة مواعيدي: هذه الخدمة تمكنك من الاطلاع على جميع المواعيد التي قمت بزيارتهم في مجموعة الحبيب الطبية, كما تستطيع من خلال هذه الخدمة:" + }, + "info-advance-payment": { + "en": "This service designed so that you can deposit an amount in advance either in your account or in someone else's account with Al Habib Medical Group.", + "ar": "تم تصميم هذه الخدمة حتى تتمكن من دفع مبلغ مقدما او تحت الحساب سواء في حسابك او في حساب شخص اخر لدى مجموعة الحبيب الطبية." + }, + "info-todo": { + "en": "This service is designed to enable you to have a quick link to the list of tasks that need to be done", + "ar": "هذه الخدمة تم تصميمها لتمكنك من الوصول الى رابط سريع لقائمة المهام التي يجب القيام بها" + }, + "info-my-balance": { + "en": "This service allows you to check your balance in all branchs", + "ar": "هذه الخدمه تتيح لك الاطلاع رصيدك في كل الفروع" + }, }; diff --git a/lib/pages/MyAppointments/MyAppointments.dart b/lib/pages/MyAppointments/MyAppointments.dart index 95485da5..7b7dc1da 100644 --- a/lib/pages/MyAppointments/MyAppointments.dart +++ b/lib/pages/MyAppointments/MyAppointments.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; @@ -40,12 +41,16 @@ class _MyAppointmentsState extends State AuthenticatedUserObject authenticatedUserObject = locator(); + List imagesInfo = List(); + @override void initState() { _tabController = new TabController(length: 3, vsync: this); WidgetsBinding.instance.addPostFrameCallback((_) { if (Provider.of(context, listen: false).isLogin) getPatientAppointmentHistory(); }); + imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/0.png')); + imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/en/1.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-appointment/ar/1.png')); super.initState(); } @@ -54,6 +59,8 @@ class _MyAppointmentsState extends State return AppScaffold( appBarTitle: TranslationBase.of(context).myAppointments, isShowAppBar: true, + imagesInfo: imagesInfo, + description: TranslationBase.of(context).infoMyAppointments, body: Container( child: Column(children: [ TabBar( diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index 96835d7b..18da37e8 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; @@ -38,19 +39,29 @@ class _ToDoState extends State { AuthenticatedUserObject authenticatedUserObject = locator(); + List imagesInfo = List(); + @override void initState() { widget.patientShareResponse = new PatientShareResponse(); WidgetsBinding.instance.addPostFrameCallback((_) { - if (authenticatedUserObject.isLogin) getPatientAppointmentHistory(); + if (authenticatedUserObject.isLogin) getPatientData(); }); super.initState(); + imagesInfo.add(ImagesInfo( + imageEn: + 'https://hmgwebservices.com/Images/MobileApp/images-info-home/todo/en/0.png', + imageAr: + 'https://hmgwebservices.com/Images/MobileApp/images-info-home/todo/ar/0.png')); } @override Widget build(BuildContext context) { return AppScaffold( appBarTitle: TranslationBase.of(context).todoList, + imagesInfo: imagesInfo, + isShowAppBar: true, + description: TranslationBase.of(context).infoTodo, body: SingleChildScrollView( child: Column( children: [ @@ -426,7 +437,8 @@ class _ToDoState extends State { } getLanguageID() async { - var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + var languageID = + await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); setState(() { widget.languageID = languageID; }); @@ -666,8 +678,8 @@ class _ToDoState extends State { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); service - .createAdvancePayment( - appo, appo.projectID.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], context) + .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], + res['Fort_id'], res['PaymentMethod'], context) .then((res) { GifLoaderDialogUtils.hideDialog(context); print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); @@ -699,6 +711,19 @@ class _ToDoState extends State { }); } + getPatientData() async { + AppSharedPreferences sharedPref = AppSharedPreferences(); + if (await sharedPref.getObject(USER_PROFILE) != null) { + var data = + AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + setState(() { + print(data); + authUser = data; + }); + getPatientAppointmentHistory(); + } + } + Future navigateToPaymentMethod( context, PatientShareResponse patientShareResponse, diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart index 9b255711..9f3cda72 100644 --- a/lib/pages/medical/balance/advance_payment_page.dart +++ b/lib/pages/medical/balance/advance_payment_page.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; @@ -49,10 +50,13 @@ class _AdvancePaymentPageState extends State { AppSharedPreferences sharedPref = AppSharedPreferences(); AuthenticatedUser authUser; + List imagesInfo = List(); + @override void initState() { super.initState(); getAuthUser(); + imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png')); } @override @@ -61,7 +65,9 @@ class _AdvancePaymentPageState extends State { onModelReady: (model) => model.getHospitals(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + imagesInfo: imagesInfo, appBarTitle: TranslationBase.of(context).advancePayment, + description: TranslationBase.of(context).infoAdvancePayment, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( diff --git a/lib/pages/medical/balance/my_balance_page.dart b/lib/pages/medical/balance/my_balance_page.dart index 421e2bed..e6bc6352 100644 --- a/lib/pages/medical/balance/my_balance_page.dart +++ b/lib/pages/medical/balance/my_balance_page.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -12,14 +13,20 @@ import 'package:hexcolor/hexcolor.dart'; import 'advance_payment_page.dart'; class MyBalancePage extends StatelessWidget { + + List imagesInfo = List(); + @override Widget build(BuildContext context) { + imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png')); return BaseView( onModelReady: (model) => model.getPatientAdvanceBalanceAmount(), builder: (_, model, w) => AppScaffold( baseViewModel: model, isShowAppBar: true, appBarTitle: TranslationBase.of(context).myBalances, + imagesInfo: imagesInfo, + description: TranslationBase.of(context).infoMyBalance, body: Container( margin: EdgeInsets.all(12), child: Column( diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 6f133ed3..2f959f08 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -874,7 +874,10 @@ String get fileno => localizedValues['fileno'][locale.languageCode]; String get excellent => localizedValues['excellent'][locale.languageCode]; String get below_average => localizedValues['below-average'][locale.languageCode]; String get infoSigns => localizedValues['info-signs'][locale.languageCode]; - + String get infoMyAppointments => localizedValues['info-my-appointments'][locale.languageCode]; + String get infoAdvancePayment => localizedValues['info-advance-payment'][locale.languageCode]; + String get infoTodo => localizedValues['info-todo'][locale.languageCode]; + String get infoMyBalance => localizedValues['info-my-balance'][locale.languageCode]; }