diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index 5d1bc03..88fa31a 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.0.5", + "flutterSdkVersion": "3.10.4", "flavors": {} } \ No newline at end of file diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 268e64d..a36608e 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -29,8 +29,10 @@ jobs: KEYS_SECRET_PASSPHRASE: ${{ secrets.KEYS_SECRET_PASSPHRASE }} - uses: subosito/flutter-action@v2 with: - flutter-version: '3.0.x' + flutter-version: '3.10.x' channel: 'stable' + cache: true + cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' - name: Decrypt dev configs run: sh ./scripts/decrypt_dev_configs.sh env: @@ -50,8 +52,10 @@ jobs: - name: Run Flutter tasks uses: subosito/flutter-action@v2 with: - flutter-version: '3.0.x' + flutter-version: '3.10.x' channel: 'stable' + cache: true + cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' - name: Decrypt dev configs run: sh ./scripts/decrypt_dev_configs.sh env: @@ -68,8 +72,10 @@ jobs: - uses: actions/checkout@v3 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.0.x' + flutter-version: '3.10.x' channel: 'stable' + cache: true + cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' - name: Decrypt dev configs run: sh ./scripts/decrypt_dev_configs.sh env: @@ -91,7 +97,7 @@ jobs: # - name: Run Flutter tasks # uses: subosito/flutter-action@v2 # with: -# flutter-version: '3.0.x' +# flutter-version: '3.10.x' # channel: 'stable' # - name: Decrypt dev configs # run: sh ./scripts/decrypt_dev_configs.sh @@ -114,8 +120,10 @@ jobs: - name: Run Flutter tasks uses: subosito/flutter-action@v2 with: - flutter-version: '3.0.x' + flutter-version: '3.10.x' channel: 'stable' + cache: true + cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' - name: Decrypt dev configs run: sh ./scripts/decrypt_dev_configs.sh env: @@ -146,8 +154,10 @@ jobs: - name: Run Flutter tasks uses: subosito/flutter-action@v2 with: - flutter-version: '3.0.x' + flutter-version: '3.10.x' channel: 'stable' + cache: true + cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' - name: Decrypt dev configs run: sh ./scripts/decrypt_dev_configs.sh env: diff --git a/analysis_options.yaml b/analysis_options.yaml index efb1a36..9e6c759 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,4 +1,4 @@ -include: package:lint/analysis_options.yaml +include: package:lint/strict.yaml analyzer: exclude: diff --git a/android/app/build.gradle b/android/app/build.gradle index ced4c29..40fb62e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -39,7 +39,7 @@ android { defaultConfig { applicationId "com.nsysu.ap" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 83226ad..bb3ce46 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,14 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle index e4bdf0f..b47cfa3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -28,6 +28,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/dev_configs.zip.gpg b/dev_configs.zip.gpg index bc83833..7c75063 100644 Binary files a/dev_configs.zip.gpg and b/dev_configs.zip.gpg differ diff --git a/ios/Podfile b/ios/Podfile index ecb0ca8..f99972a 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '10.0' +platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 52e0b9b..2e01e5a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -5,122 +5,128 @@ PODS: - Flutter - app_tracking_transparency (0.0.1): - Flutter - - AppAuth (1.5.0): - - AppAuth/Core (= 1.5.0) - - AppAuth/ExternalUserAgent (= 1.5.0) - - AppAuth/Core (1.5.0) - - AppAuth/ExternalUserAgent (1.5.0): + - AppAuth (1.6.2): + - AppAuth/Core (= 1.6.2) + - AppAuth/ExternalUserAgent (= 1.6.2) + - AppAuth/Core (1.6.2) + - AppAuth/ExternalUserAgent (1.6.2): - AppAuth/Core - - Firebase/Analytics (9.3.0): + - Firebase/Analytics (10.9.0): - Firebase/Core - - Firebase/Core (9.3.0): + - Firebase/Core (10.9.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 9.3.0) - - Firebase/CoreOnly (9.3.0): - - FirebaseCore (= 9.3.0) - - Firebase/Crashlytics (9.3.0): + - FirebaseAnalytics (~> 10.9.0) + - Firebase/CoreOnly (10.9.0): + - FirebaseCore (= 10.9.0) + - Firebase/Crashlytics (10.9.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 9.3.0) - - Firebase/Messaging (9.3.0): + - FirebaseCrashlytics (~> 10.9.0) + - Firebase/Messaging (10.9.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 9.3.0) - - Firebase/Performance (9.3.0): + - FirebaseMessaging (~> 10.9.0) + - Firebase/Performance (10.9.0): - Firebase/CoreOnly - - FirebasePerformance (~> 9.3.0) - - Firebase/RemoteConfig (9.3.0): + - FirebasePerformance (~> 10.9.0) + - Firebase/RemoteConfig (10.9.0): - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 9.3.0) - - firebase_analytics (9.3.1): - - Firebase/Analytics (= 9.3.0) + - FirebaseRemoteConfig (~> 10.9.0) + - firebase_analytics (10.4.2): + - Firebase/Analytics (= 10.9.0) - firebase_core - Flutter - - firebase_core (1.20.1): - - Firebase/CoreOnly (= 9.3.0) + - firebase_core (2.13.1): + - Firebase/CoreOnly (= 10.9.0) - Flutter - - firebase_crashlytics (2.8.7): - - Firebase/Crashlytics (= 9.3.0) + - firebase_crashlytics (3.3.2): + - Firebase/Crashlytics (= 10.9.0) - firebase_core - Flutter - - firebase_messaging (12.0.2): - - Firebase/Messaging (= 9.3.0) + - firebase_messaging (14.6.2): + - Firebase/Messaging (= 10.9.0) - firebase_core - Flutter - - firebase_performance (0.8.2-2): - - Firebase/Performance (= 9.3.0) + - firebase_performance (0.9.2-2): + - Firebase/Performance (= 10.9.0) - firebase_core - Flutter - - firebase_remote_config (2.0.14): - - Firebase/RemoteConfig (= 9.3.0) + - firebase_remote_config (4.2.2): + - Firebase/RemoteConfig (= 10.9.0) - firebase_core - Flutter - - FirebaseABTesting (9.4.0): - - FirebaseCore (~> 9.0) - - FirebaseAnalytics (9.3.0): - - FirebaseAnalytics/AdIdSupport (= 9.3.0) - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseABTesting (10.10.0): + - FirebaseCore (~> 10.0) + - FirebaseAnalytics (10.9.0): + - FirebaseAnalytics/AdIdSupport (= 10.9.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleAppMeasurement (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseAnalytics/AdIdSupport (10.9.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleAppMeasurement (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (9.3.0): - - FirebaseCoreDiagnostics (~> 9.0) - - FirebaseCoreInternal (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - FirebaseCoreDiagnostics (9.4.0): - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCoreInternal (9.4.0): - - "GoogleUtilities/NSData+zlib (~> 7.7)" - - FirebaseCrashlytics (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) + - FirebaseCore (10.9.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreExtension (10.10.0): + - FirebaseCore (~> 10.0) + - FirebaseCoreInternal (10.10.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseCrashlytics (10.9.0): + - FirebaseCore (~> 10.5) + - FirebaseInstallations (~> 10.0) + - FirebaseSessions (~> 10.5) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/Environment (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (~> 2.1) - - FirebaseInstallations (9.4.0): - - FirebaseCore (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseInstallations (10.10.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Reachability (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseMessaging (10.9.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebasePerformance (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - FirebaseRemoteConfig (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/ISASwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) + - FirebasePerformance (10.9.0): + - FirebaseCore (~> 10.5) + - FirebaseInstallations (~> 10.0) + - FirebaseRemoteConfig (~> 10.0) + - FirebaseSessions (~> 10.5) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/ISASwizzler (~> 7.8) + - GoogleUtilities/MethodSwizzler (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseRemoteConfig (9.3.0): - - FirebaseABTesting (~> 9.0) - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseRemoteConfig (10.9.0): + - FirebaseABTesting (~> 10.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseSessions (10.10.0): + - FirebaseCore (~> 10.5) + - FirebaseCoreExtension (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/Environment (~> 7.10) + - nanopb (< 2.30910.0, >= 2.30908.0) + - PromisesSwift (~> 2.1) - Flutter (1.0.0) - flutter_inappwebview (0.0.1): - Flutter @@ -139,58 +145,58 @@ PODS: - google_sign_in_ios (0.0.1): - Flutter - GoogleSignIn (~> 6.2) - - GoogleAppMeasurement (9.3.0): - - GoogleAppMeasurement/AdIdSupport (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement (10.9.0): + - GoogleAppMeasurement/AdIdSupport (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (9.3.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/AdIdSupport (10.9.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (9.3.0): - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/WithoutAdIdSupport (10.9.0): + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleDataTransport (9.2.0): + - GoogleDataTransport (9.2.3): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleSignIn (6.2.2): + - GoogleSignIn (6.2.4): - AppAuth (~> 1.5) - GTMAppAuth (~> 1.3) - - GTMSessionFetcher/Core (~> 1.1) - - GoogleUtilities/AppDelegateSwizzler (7.7.0): + - GTMSessionFetcher/Core (< 3.0, >= 1.1) + - GoogleUtilities/AppDelegateSwizzler (7.11.1): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.7.0): + - GoogleUtilities/Environment (7.11.1): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/ISASwizzler (7.7.0) - - GoogleUtilities/Logger (7.7.0): + - GoogleUtilities/ISASwizzler (7.11.1) + - GoogleUtilities/Logger (7.11.1): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.7.0): + - GoogleUtilities/MethodSwizzler (7.11.1): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.7.0): + - GoogleUtilities/Network (7.11.1): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.7.0)" - - GoogleUtilities/Reachability (7.7.0): + - "GoogleUtilities/NSData+zlib (7.11.1)" + - GoogleUtilities/Reachability (7.11.1): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.7.0): + - GoogleUtilities/UserDefaults (7.11.1): - GoogleUtilities/Logger - - GTMAppAuth (1.3.0): - - AppAuth/Core (~> 1.4) - - GTMSessionFetcher/Core (~> 1.5) - - GTMSessionFetcher/Core (1.7.2) + - GTMAppAuth (1.3.1): + - AppAuth/Core (~> 1.6) + - GTMSessionFetcher/Core (< 3.0, >= 1.5) + - GTMSessionFetcher/Core (2.3.0) - image_picker_ios (0.0.1): - Flutter - in_app_review (0.2.0): @@ -210,7 +216,9 @@ PODS: - FlutterMacOS - printing (1.0.0): - Flutter - - PromisesObjC (2.1.1) + - PromisesObjC (2.2.0) + - PromisesSwift (2.2.0): + - PromisesObjC (= 2.2.0) - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): @@ -257,13 +265,14 @@ SPEC REPOS: - FirebaseABTesting - FirebaseAnalytics - FirebaseCore - - FirebaseCoreDiagnostics + - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseCrashlytics - FirebaseInstallations - FirebaseMessaging - FirebasePerformance - FirebaseRemoteConfig + - FirebaseSessions - FMDB - GoogleAppMeasurement - GoogleDataTransport @@ -274,6 +283,7 @@ SPEC REPOS: - nanopb - OrderedSet - PromisesObjC + - PromisesSwift EXTERNAL SOURCES: add_2_calendar: @@ -331,51 +341,53 @@ SPEC CHECKSUMS: add_2_calendar: e9d68636aed37fb18e12f5a3d74c2e0589487af0 ap_common_plugin: f5861976eed0e60431f1eb939796a0eb93d73e69 app_tracking_transparency: 5b1745ef9ade815f7455cb6a0848349589afb7c5 - AppAuth: 80317d99ac7ff2801a2f18ff86b48cd315ed465d - Firebase: ef75abb1cdbc746d5a38f4e26c422c807b189b8c - firebase_analytics: 76a3a81b95ea32c1f8dbd900ec751b342d26d543 - firebase_core: e66a443ec996cb5e364dc70b4cfc1809c32cbb2e - firebase_crashlytics: 95cb124fe8ba64e9cedad8816b8aee6204f8dbeb - firebase_messaging: b414881f438b3b0b1bf1b0dd4b6767c4cfcf4dc7 - firebase_performance: 39e081d1a507aeac5a84dff1027a01ede988a5bd - firebase_remote_config: 16b065982a52fd1c6246a8980e66b5fa244cd680 - FirebaseABTesting: e59eec91fafce74a0f5261809ed0025b7e450db1 - FirebaseAnalytics: bf46f5163f44097ce2c789de0b3e6f87f1da834a - FirebaseCore: c088995ece701a021a48a1348ea0174877de2a6a - FirebaseCoreDiagnostics: aaa87098082c4d4bdd1a9557b1186d18ca85ce8c - FirebaseCoreInternal: a13302b0088fbf5f38b79b6ece49c2af7d3e05d6 - FirebaseCrashlytics: 65a5b349e664e986e6c7486b0a9b5ed8c11d0491 - FirebaseInstallations: 61db1054e688d2bdc4e2b3f744c1b086e913b742 - FirebaseMessaging: 2f6e38b6133059eb796ec224104f09379298a8c3 - FirebasePerformance: 18bb0984808ec429fae69fb5f1da4a68f57605b1 - FirebaseRemoteConfig: 0a644c924b3339bcf3bc3ea253206f171672308e - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 + Firebase: bd152f0f3d278c4060c5c71359db08ebcfd5a3e2 + firebase_analytics: 48ed4a230abf9f585f7e7b477791effe96f5a791 + firebase_core: ce64b0941c6d87c6ef5022ae9116a158236c8c94 + firebase_crashlytics: 9b80d1944507cc07fa1c4455797f7d2eb7c8873f + firebase_messaging: 42912365e62efc1ea3e00724e5eecba6068ddb88 + firebase_performance: d11d1fd9591547f6b75f325aaadd6550eaf7e090 + firebase_remote_config: a4d88ffa663b3ccd09115c90680b813203cb9184 + FirebaseABTesting: b2a87808d90f02766fcffb3957d3e397e7accc15 + FirebaseAnalytics: 5ea0db4893825e7b0149d575352cd838236313dc + FirebaseCore: b68d3616526ec02e4d155166bbafb8eca64af557 + FirebaseCoreExtension: 8d93ebbf6838a874b4ed82a564c9d6705f8365dd + FirebaseCoreInternal: 971029061d326000d65bfdc21f5502c75c8b0893 + FirebaseCrashlytics: b60329455285aff853e54139d8ddbfe1e5f2b9f9 + FirebaseInstallations: 52153982b057d3afcb4e1fbb3eb0b6d00611e681 + FirebaseMessaging: 6b7052cc3da7bc8e5f72bef871243e8f04a14eed + FirebasePerformance: eee2f5da94fd7e5d15487649f8fe10a90c87c174 + FirebaseRemoteConfig: 5ea5834e8c518f377bf1af2d97ebd611914ebf2d + FirebaseSessions: 5f9e62cd4096e24d2011cbd845b0efceffaee1ec + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721 flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a google_sign_in_ios: 4f85eb9f937450765c8573bb85fd8cd6a5af675c - GoogleAppMeasurement: b907bdad775b6975a8108762345b2cfbf1a93c37 - GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f - GoogleSignIn: 3c68388ac221f379676e8f1cb115df3aaf73b93f - GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 - GTMAppAuth: 4d8f864896f3646f0c33baf38a28362f4c601e15 - GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba + GoogleAppMeasurement: 373bcbead1bb6a85be7a64d5d8f96284b762ea9c + GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd + GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a + GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 + GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd + GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2 image_picker_ios: b786a5dcf033a8336a657191401bfdf12017dabb in_app_review: 4a97249f7a2f539a0f294c2d9196b7fe35e49541 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c - package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e + package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604 - printing: eafa00acb682c0ca029d4d98d0798f55a1e27102 - PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb + printing: 233e1b73bd1f4a05615548e9b5a324c98588640b + PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef + PromisesSwift: cf9eb58666a43bbe007302226e510b16c1e10959 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440 sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de -PODFILE CHECKSUM: ba3ac0caee9e970ba540358a9a3913d97e932f5d +PODFILE CHECKSUM: 13dcb1df7b04aa50abd9132a5b5c1a6ce68fee94 -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.1 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 41876a7..72fb593 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -14,7 +14,6 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - A48806BB22AC109700608B9C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = A48806BA22AC109600608B9C /* GoogleService-Info.plist */; }; A48806BE22AEBE2F00608B9C /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A48806BD22AEBE2F00608B9C /* AdSupport.framework */; }; A48806D022AEC0E100608B9C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A48806D222AEC0E100608B9C /* InfoPlist.strings */; }; A4E3F60E2525B59600343570 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E3F60D2525B59600343570 /* WidgetKit.framework */; }; @@ -26,6 +25,7 @@ A4E3F61C2525B59800343570 /* CourseAppWidgetExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = A4E3F60C2525B59600343570 /* CourseAppWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; A4E3F6242525B5C300343570 /* CourseData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E3F6232525B5C300343570 /* CourseData.swift */; }; AD25CACD5C4E83CD51716E94 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 365FBA24D7FECAB3188F547B /* Pods_Runner.framework */; }; + EB6B149754392BEFE8D12B1A /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 92CD18BE6B8BD93FBE74FEE2 /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -72,6 +72,7 @@ 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 876C04607E6FE35643FE62BF /* 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 = ""; }; + 92CD18BE6B8BD93FBE74FEE2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -80,7 +81,6 @@ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A47A35CB254121950070DC6B /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; - A48806BA22AC109600608B9C /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; A48806BC22ACB4FB00608B9C /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; A48806BD22AEBE2F00608B9C /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; A48806D822AEC10B00608B9C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -139,6 +139,7 @@ 97C146EF1CF9000F007C117D /* Products */, FC560AFD5ADFA9F9BAB177F5 /* Pods */, E10FCCE7B13A8A1FE9B11C76 /* Frameworks */, + 92CD18BE6B8BD93FBE74FEE2 /* GoogleService-Info.plist */, ); sourceTree = ""; }; @@ -155,7 +156,6 @@ isa = PBXGroup; children = ( A48806BC22ACB4FB00608B9C /* Runner.entitlements */, - A48806BA22AC109600608B9C /* GoogleService-Info.plist */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -316,7 +316,7 @@ 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - A48806BB22AC109700608B9C /* GoogleService-Info.plist in Resources */, + EB6B149754392BEFE8D12B1A /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -333,10 +333,12 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -369,6 +371,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -427,13 +430,14 @@ "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/FirebaseABTesting/FirebaseABTesting.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework", - "${BUILT_PRODUCTS_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCoreExtension/FirebaseCoreExtension.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework", "${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework", "${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework", "${BUILT_PRODUCTS_DIR}/FirebasePerformance/FirebasePerformance.framework", "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", "${BUILT_PRODUCTS_DIR}/GTMAppAuth/GTMAppAuth.framework", "${BUILT_PRODUCTS_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", @@ -441,6 +445,7 @@ "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", "${BUILT_PRODUCTS_DIR}/OrderedSet/OrderedSet.framework", "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework", + "${BUILT_PRODUCTS_DIR}/PromisesSwift/Promises.framework", "${BUILT_PRODUCTS_DIR}/add_2_calendar/add_2_calendar.framework", "${BUILT_PRODUCTS_DIR}/ap_common_plugin/ap_common_plugin.framework", "${BUILT_PRODUCTS_DIR}/app_tracking_transparency/app_tracking_transparency.framework", @@ -466,13 +471,14 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseABTesting.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreDiagnostics.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreExtension.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCrashlytics.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebasePerformance.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfig.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMAppAuth.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GTMSessionFetcher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", @@ -480,6 +486,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OrderedSet.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Promises.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/add_2_calendar.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ap_common_plugin.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/app_tracking_transparency.framework", diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 33906ee..4f5c5bc 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -83,5 +83,7 @@ CADisableMinimumFrameDurationOnPhone + UIApplicationSupportsIndirectInputEvents + diff --git a/lib/api/graduation_helper.dart b/lib/api/graduation_helper.dart index 56b6737..651bf97 100644 --- a/lib/api/graduation_helper.dart +++ b/lib/api/graduation_helper.dart @@ -1,4 +1,4 @@ -import 'dart:typed_data'; +import 'dart:convert'; import 'package:ap_common/callback/general_callback.dart'; import 'package:cookie_jar/cookie_jar.dart'; @@ -8,7 +8,6 @@ import 'package:html/dom.dart'; import 'package:html/parser.dart'; import 'package:nsysu_ap/api/selcrs_helper.dart'; import 'package:nsysu_ap/models/graduation_report_data.dart'; -import 'package:nsysu_ap/utils/big5/big5.dart'; import 'package:nsysu_ap/utils/utils.dart'; class GraduationHelper { @@ -63,7 +62,7 @@ class GraduationHelper { 'ACTION': '0', }, ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); // print('Response = $text'); // print('response.statusCode = ${response.statusCode}'); if (text.contains('資料錯誤請重新輸入')) { @@ -76,7 +75,7 @@ class GraduationHelper { ); } } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { isLogin = true; callback.onSuccess(GeneralResponse.success()); } else { @@ -108,11 +107,11 @@ class GraduationHelper { generalEducationCourse: [], otherEducationsCourse: [], ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); final int startTime = DateTime.now().millisecondsSinceEpoch; // debugPrint('text = $text'); // debugPrint(DateTime.now().toString()); - final Document document = parse(text, encoding: 'BIG-5'); + final Document document = parse(text); final List tableDoc = document.getElementsByTagName('tbody'); if (tableDoc.length >= 2) { for (int i = 0; i < tableDoc.length; i++) { diff --git a/lib/api/selcrs_helper.dart b/lib/api/selcrs_helper.dart index 547d769..916d253 100644 --- a/lib/api/selcrs_helper.dart +++ b/lib/api/selcrs_helper.dart @@ -1,4 +1,4 @@ -import 'dart:typed_data'; +import 'dart:convert'; import 'package:ap_common/callback/general_callback.dart'; import 'package:ap_common/models/course_data.dart'; @@ -42,8 +42,8 @@ class SelcrsHelper { Dio dio = Dio( BaseOptions( responseType: ResponseType.bytes, - sendTimeout: 10000, - receiveTimeout: 10000, + sendTimeout: const Duration(seconds: 10), + receiveTimeout: const Duration(seconds: 10), ), ); CookieJar cookieJar = CookieJar(); @@ -140,7 +140,7 @@ class SelcrsHelper { dumpError('score', text, null); } } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { } else { error++; if (error > 5) { @@ -163,7 +163,7 @@ class SelcrsHelper { 'SPassword': base64md5Password, }, ); - final String text = big5.decode(courseResponse.data!); + final String text = const Utf8Decoder().convert(courseResponse.data!); // debugPrint('course = $text'); if (text.contains('學號碼密碼不符')) { return callback?.onError( @@ -178,7 +178,7 @@ class SelcrsHelper { return dumpError('course', text, callback) as Future; } } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { final String _ = big5.decode(e.response!.data as Uint8List); // debugPrint('text = $text'); this.username = username; @@ -205,7 +205,6 @@ class SelcrsHelper { } } } - return null; } Future reLogin() async { @@ -225,7 +224,7 @@ class SelcrsHelper { final Response response = await dio.get( '$selcrsUrl/menu4/tools/changedat.asp', ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); if (text.contains(courseTimeoutText) && canReLogin) { await reLogin(); return getUserInfo( @@ -252,9 +251,9 @@ class SelcrsHelper { } UserInfo parserUserInfo(String text) { - final dom.Document document = parse(text, encoding: 'BIG-5'); + final dom.Document document = parse(text); final List tdDoc = document.getElementsByTagName('td'); - UserInfo userInfo = UserInfo(); + UserInfo userInfo = UserInfo.empty(); if (tdDoc.isNotEmpty) { userInfo = UserInfo( department: tdDoc[1].text, @@ -268,16 +267,18 @@ class SelcrsHelper { } Future getCourseSemesterData({ + required Semester defaultSemester, required GeneralCallback callback, }) async { final String url = '$selcrsUrl/menu4/query/stu_slt_up.asp'; try { final Response response = await dio.post(url); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); // print('text = ${text}'); if (text.contains(courseTimeoutText) && canReLogin) { await reLogin(); return getCourseSemesterData( + defaultSemester: defaultSemester, callback: callback, ); } @@ -286,12 +287,15 @@ class SelcrsHelper { return; } reLoginCount = 0; - final dom.Document document = parse(text, encoding: 'BIG-5'); + final dom.Document document = parse(text); final List options = document.getElementsByTagName('option'); - final SemesterData courseSemesterData = SemesterData(data: []); + final SemesterData courseSemesterData = SemesterData( + data: [], + defaultSemester: defaultSemester, + ); for (int i = 0; i < options.length; i++) { //print('$i => ${tdDoc[i].text}'); - courseSemesterData.data!.add( + courseSemesterData.data.add( Semester( text: options[i].text, year: options[i].attributes['value']!.substring(0, 3), @@ -310,7 +314,7 @@ class SelcrsHelper { Future getCourseData({ required String username, - required TimeCodeConfig? timeCodeConfig, + required TimeCodeConfig timeCodeConfig, required String semester, required GeneralCallback callback, }) async { @@ -326,7 +330,7 @@ class SelcrsHelper { }, options: _courseOption, ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); // debugPrint('text = ${text}'); if (text.contains(courseTimeoutText) && canReLogin) { await reLogin(); @@ -343,13 +347,11 @@ class SelcrsHelper { } reLoginCount = 0; final int startTime = DateTime.now().millisecondsSinceEpoch; - final dom.Document document = parse(text, encoding: 'BIG-5'); + final dom.Document document = parse(text); final List trDoc = document.getElementsByTagName('tr'); final CourseData courseData = - CourseData(courses: (trDoc.isEmpty) ? null : []); - if (courseData.courses != null) { - courseData.timeCodes = timeCodeConfig!.timeCodes; - } + CourseData(courses: [], timeCodes: timeCodeConfig.timeCodes); + //print(DateTime.now()); for (int i = 1; i < trDoc.length; i++) { final List tdDoc = trDoc[i].getElementsByTagName('td'); @@ -389,14 +391,14 @@ class SelcrsHelper { final List sections = tdDoc[j].text.split(''); if (sections.isNotEmpty && sections[0] != ' ') { for (final String section in sections) { - final int index = timeCodeConfig!.indexOf(section); + final int index = timeCodeConfig.indexOf(section); if (index == -1) continue; - course.times!.add(SectionTime(weekday: j - 9, index: index)); + course.times.add(SectionTime(weekday: j - 9, index: index)); } } } } - courseData.courses!.add(course); + courseData.courses.add(course); } if (trDoc.isNotEmpty) { final int endTime = DateTime.now().millisecondsSinceEpoch; @@ -459,7 +461,7 @@ class SelcrsHelper { } return callback.onSuccess(scoreSemesterData); } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { final String text = big5.decode(e.response!.data as Uint8List); if (text.contains(scoreTimeoutText) && canReLogin) { await reLogin(); @@ -503,7 +505,7 @@ class SelcrsHelper { final int startTime = DateTime.now().millisecondsSinceEpoch; final dom.Document document = parse(text, encoding: 'BIG-5'); final List list = []; - final Detail detail = Detail(); + Detail detail = Detail(); final List tableDoc = document.getElementsByTagName('tbody'); if (tableDoc.length >= 2) { // for (var i = 0; i < tableDoc.length; i++) { @@ -516,16 +518,18 @@ class SelcrsHelper { if (tableDoc.length == 3) { final List fontDoc = tableDoc[1].getElementsByTagName('font'); - detail.creditTaken = double.parse(fontDoc[0].text.split(':')[1]); - detail.creditEarned = double.parse(fontDoc[1].text.split(':')[1]); - detail.average = double.parse(fontDoc[2].text.split(':')[1]); - detail.classRank = - '${fontDoc[4].text.split(':')[1]}/${fontDoc[5].text.split(':')[1]}'; double percentage = double.parse(fontDoc[4].text.split(':')[1]) / double.parse(fontDoc[5].text.split(':')[1]); percentage = 1.0 - percentage; percentage *= 100; - detail.classPercentage = double.parse(percentage.toStringAsFixed(2)); + detail = Detail( + creditTaken: double.parse(fontDoc[0].text.split(':')[1]), + creditEarned: double.parse(fontDoc[1].text.split(':')[1]), + average: double.parse(fontDoc[2].text.split(':')[1]), + classRank: + '${fontDoc[4].text.split(':')[1]}/${fontDoc[5].text.split(':')[1]}', + classPercentage: double.parse(percentage.toStringAsFixed(2)), + ); } final List trDoc = tableDoc[0].getElementsByTagName('tr'); for (int i = 0; i < trDoc.length; i++) { @@ -533,13 +537,14 @@ class SelcrsHelper { trDoc[i].getElementsByTagName('font'); if (fontDoc.length != 6) continue; if (i != 0) { - final Score score = Score( + Score score = Score( courseNumber: fontDoc[2].text.substring(1, fontDoc[2].text.length - 1), title: //'${trDoc[i].getElementsByTagName('font')[2].text}' fontDoc[3].text, middleScore: fontDoc[4].text, finalScore: fontDoc[5].text, + units: '', ); if (searchPreScore && (score.finalScore == null || @@ -547,8 +552,10 @@ class SelcrsHelper { final PreScore? preScore = await getPreScoreData(score.courseNumber); if (preScore != null) { - score.finalScore = preScore.grades; - score.isPreScore = true; + score = score.copyWith( + finalScore: preScore.grades, + isPreScore: true, + ); } } list.add(score); @@ -578,7 +585,7 @@ class SelcrsHelper { ); return callback.onSuccess(scoreData); } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { final String text = big5.decode(e.response!.data as Uint8List); if (text.contains(scoreTimeoutText) && canReLogin) { await reLogin(); @@ -682,7 +689,7 @@ class SelcrsHelper { 'T1': mail, }, ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); if (text.contains(courseTimeoutText) && canReLogin) { await reLogin(); return changeMail( diff --git a/lib/api/tuition_helper.dart b/lib/api/tuition_helper.dart index 38b2e50..6c4665f 100644 --- a/lib/api/tuition_helper.dart +++ b/lib/api/tuition_helper.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:typed_data'; import 'package:ap_common/callback/general_callback.dart'; @@ -6,7 +7,6 @@ import 'package:dio_cookie_manager/dio_cookie_manager.dart'; import 'package:html/dom.dart'; import 'package:html/parser.dart'; import 'package:nsysu_ap/models/tuition_and_fees.dart'; -import 'package:nsysu_ap/utils/big5/big5.dart'; class TuitionHelper { static const String basePATH = 'https://tfstu.nsysu.edu.tw'; @@ -60,12 +60,12 @@ class TuitionHelper { 'passwd': password, }, ); - final String _ = big5.decode(response.data!); + final String _ = const Utf8Decoder().convert(response.data!); // debugPrint('Request = ${response.request.data}'); // debugPrint('Response = $text'); // debugPrint('response.statusCode = ${response.statusCode}'); } on DioError catch (e) { - if (e.type == DioErrorType.response && e.response!.statusCode == 302) { + if (e.type == DioErrorType.badResponse && e.response!.statusCode == 302) { isLogin = true; return callback.onSuccess(GeneralResponse.success()); } else { @@ -87,7 +87,7 @@ class TuitionHelper { url, options: _tfOption, ); - final String text = big5.decode(response.data!); + final String text = const Utf8Decoder().convert(response.data!); // debugPrint('text = ${text}'); if (text.contains('沒有合乎查詢條件的資料')) { callback.onSuccess([]); diff --git a/lib/pages/graduation_report_page.dart b/lib/pages/graduation_report_page.dart index 65d3f0a..5924adc 100644 --- a/lib/pages/graduation_report_page.dart +++ b/lib/pages/graduation_report_page.dart @@ -47,11 +47,6 @@ class GraduationReportPageState extends State } } - @override - void dispose() { - super.dispose(); - } - @override Widget build(BuildContext context) { ap = ApLocalizations.of(context); @@ -349,13 +344,15 @@ class GraduationReportPageState extends State Function(DioError) get _onFailure => (DioError e) => setState(() { state = _State.error; switch (e.type) { - case DioErrorType.connectTimeout: + case DioErrorType.connectionTimeout: + case DioErrorType.connectionError: case DioErrorType.sendTimeout: case DioErrorType.receiveTimeout: - case DioErrorType.response: + case DioErrorType.badResponse: case DioErrorType.cancel: + case DioErrorType.badCertificate: break; - case DioErrorType.other: + case DioErrorType.unknown: throw e; } }); diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 389fa4f..7fbd33c 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -101,6 +101,8 @@ class HomePageState extends State { } if (await AppTrackingUtils.trackingAuthorizationStatus == TrackingStatus.notDetermined) { + //ignore: use_build_context_synchronously + if (!context.mounted) return; AppTrackingUtils.show(context: context); } }); @@ -409,7 +411,7 @@ class HomePageState extends State { Future _getAllAnnouncement() async { AnnouncementHelper.instance.getAnnouncements( tags: ['nsysu'], - callback: GeneralCallback?>( + callback: GeneralCallback>( onFailure: (_) => setState(() => state = HomeState.error), onError: (_) => setState(() => state = HomeState.error), onSuccess: (List? data) { @@ -519,6 +521,8 @@ class HomePageState extends State { await remoteConfig.fetch(); await remoteConfig.activate(); final VersionInfo versionInfo = remoteConfig.versionInfo; + //ignore: use_build_context_synchronously + if (!context.mounted) return; DialogUtils.showNewVersionContent( context: context, iOSAppId: '146752219', diff --git a/lib/pages/study/course_page.dart b/lib/pages/study/course_page.dart index c49538d..c857bc2 100644 --- a/lib/pages/study/course_page.dart +++ b/lib/pages/study/course_page.dart @@ -25,10 +25,10 @@ class CoursePageState extends State { CourseState state = CourseState.loading; - TimeCodeConfig? timeCodeConfig; + late TimeCodeConfig timeCodeConfig; SemesterData? semesterData; - CourseData courseData = CourseData(); + CourseData courseData = CourseData.empty(); CourseNotifyData? notifyData; String? customStateHint; @@ -39,7 +39,7 @@ class CoursePageState extends State { String defaultSemesterCode = ''; String get courseNotifyCacheKey => - semesterData?.defaultSemester?.code ?? '1091'; + semesterData?.defaultSemester.code ?? '1091'; @override void initState() { @@ -97,44 +97,50 @@ class CoursePageState extends State { (_) => setState(() => state = CourseState.error); Future _getSemester() async { + FirebaseRemoteConfig remoteConfig; + try { + //TODO improve + remoteConfig = FirebaseRemoteConfigUtils.instance.remoteConfig!; + await remoteConfig.fetch(); + await remoteConfig.activate(); + defaultSemesterCode = + remoteConfig.getString(Constants.defaultCourseSemesterCode); + final String rawTimeCodeConfig = + remoteConfig.getString(Constants.timeCodeConfig); + timeCodeConfig = TimeCodeConfig.fromRawJson(rawTimeCodeConfig); + Preferences.setString( + Constants.defaultCourseSemesterCode, + defaultSemesterCode, + ); + Preferences.setString( + Constants.timeCodeConfig, + rawTimeCodeConfig, + ); + } catch (exception) { + defaultSemesterCode = Preferences.getString( + Constants.defaultCourseSemesterCode, + '${Constants.defaultYear}${Constants.defaultSemester}', + ); + timeCodeConfig = TimeCodeConfig.fromRawJson( + Preferences.getString( + Constants.timeCodeConfig, + //ignore: lines_longer_than_80_chars + '{ "timeCodes":[{"title":"A", "startTime": "7:00" ,"endTime": "7:50" },{ "title":"1", "startTime": "8:10" ,"endTime": "9:00" },{ "title":"2", "startTime": "9:10" ,"endTime": "10:00" },{ "title":"3", "startTime": "10:10" ,"endTime": "11:00" },{ "title":"4", "startTime": "11:10" ,"endTime": "12:00" },{ "title":"B", "startTime": "12:10" ,"endTime": "13:00" },{ "title":"5", "startTime": "13:10" ,"endTime": "14:00" },{ "title":"6", "startTime": "14:10" ,"endTime": "15:00" },{ "title":"7", "startTime": "15:10" ,"endTime": "16:00" },{ "title":"8", "startTime": "16:10" ,"endTime": "17:00" },{ "title":"9", "startTime": "17:10" ,"endTime": "18:00" },{ "title":"C", "startTime": "18:20" ,"endTime": "19:10" },{ "title":"D", "startTime": "19:15" ,"endTime": "20:05" },{ "title":"E", "startTime": "20:10" ,"endTime": "21:00" },{ "title":"F", "startTime": "21:05" ,"endTime": "21:55" }] }', + ), + ); + } + final Semester defaultSemester = Semester( + year: defaultSemesterCode.substring(0, 3), + value: defaultSemesterCode.substring(3), + text: parser(defaultSemesterCode), + ); SelcrsHelper.instance.getCourseSemesterData( + defaultSemester: defaultSemester, callback: GeneralCallback( onFailure: _onFailure, onError: _onError, onSuccess: (SemesterData data) async { semesterData = data; - FirebaseRemoteConfig remoteConfig; - try { - //TODO improve - remoteConfig = FirebaseRemoteConfigUtils.instance.remoteConfig!; - await remoteConfig.fetch(); - await remoteConfig.activate(); - defaultSemesterCode = - remoteConfig.getString(Constants.defaultCourseSemesterCode); - final String rawTimeCodeConfig = - remoteConfig.getString(Constants.timeCodeConfig); - timeCodeConfig = TimeCodeConfig.fromRawJson(rawTimeCodeConfig); - Preferences.setString( - Constants.defaultCourseSemesterCode, - defaultSemesterCode, - ); - Preferences.setString( - Constants.timeCodeConfig, - rawTimeCodeConfig, - ); - } catch (exception) { - defaultSemesterCode = Preferences.getString( - Constants.defaultCourseSemesterCode, - '${Constants.defaultYear}${Constants.defaultSemester}', - ); - timeCodeConfig = TimeCodeConfig.fromRawJson( - Preferences.getString( - Constants.timeCodeConfig, - //ignore: lines_longer_than_80_chars - '{ "timeCodes":[{"title":"A", "startTime": "7:00" ,"endTime": "7:50" },{ "title":"1", "startTime": "8:10" ,"endTime": "9:00" },{ "title":"2", "startTime": "9:10" ,"endTime": "10:00" },{ "title":"3", "startTime": "10:10" ,"endTime": "11:00" },{ "title":"4", "startTime": "11:10" ,"endTime": "12:00" },{ "title":"B", "startTime": "12:10" ,"endTime": "13:00" },{ "title":"5", "startTime": "13:10" ,"endTime": "14:00" },{ "title":"6", "startTime": "14:10" ,"endTime": "15:00" },{ "title":"7", "startTime": "15:10" ,"endTime": "16:00" },{ "title":"8", "startTime": "16:10" ,"endTime": "17:00" },{ "title":"9", "startTime": "17:10" ,"endTime": "18:00" },{ "title":"C", "startTime": "18:20" ,"endTime": "19:10" },{ "title":"D", "startTime": "19:15" ,"endTime": "20:05" },{ "title":"E", "startTime": "20:10" ,"endTime": "21:00" },{ "title":"F", "startTime": "21:05" ,"endTime": "21:55" }] }', - ), - ); - } final String semester = Preferences.getString( ApConstants.currentSemesterCode, ApConstants.semesterLatest, @@ -149,13 +155,8 @@ class CoursePageState extends State { defaultSemesterCode, ); } - semesterData!.defaultSemester = Semester( - year: defaultSemesterCode.substring(0, 3), - value: defaultSemesterCode.substring(3), - text: parser(defaultSemesterCode), - ); - for (final Semester option in semesterData!.data!) { - option.text = parser(option.text!); + for (final Semester option in semesterData!.data) { + option.text = parser(option.text); } semesterData!.currentIndex = semesterData!.defaultIndex; _getCourseTables(); @@ -215,7 +216,7 @@ class CoursePageState extends State { courseData.save(courseNotifyCacheKey); if (mounted) { setState(() { - if (courseData.courses == null || courseData.courses!.isEmpty) { + if (courseData.courses.isEmpty) { state = CourseState.empty; } else { state = CourseState.finish; diff --git a/lib/pages/study/score_page.dart b/lib/pages/study/score_page.dart index ceef3ef..6db30d4 100644 --- a/lib/pages/study/score_page.dart +++ b/lib/pages/study/score_page.dart @@ -34,11 +34,10 @@ class ScorePageState extends State { int currentSemesterIndex = 0; bool get hasPreScore { - bool _hasPreScore = false; - scoreData?.scores?.forEach((Score score) { - if (score.isPreScore) _hasPreScore = true; - }); - return _hasPreScore; + for (final Score score in scoreData?.scores ?? []) { + if (score.isPreScore) return true; + } + return false; } @override @@ -100,10 +99,10 @@ class ScorePageState extends State { }, finalScoreBuilder: (int index) { return ScoreTextBorder( - text: scoreData!.scores![index].finalScore, + text: scoreData!.scores[index].finalScore, style: TextStyle( fontSize: 15.0, - color: scoreData!.scores![index].isPreScore + color: scoreData!.scores[index].isPreScore ? ApTheme.of(context).yellow : null, ), @@ -113,12 +112,12 @@ class ScorePageState extends State { ? null : [ '${ap.creditsTakenEarned}:' + - '${scoreData!.detail!.creditTaken ?? ''}' - '${scoreData!.detail!.isCreditEmpty ? '' : ' / '}' - '${scoreData!.detail!.creditEarned ?? ''}', - '${ap.average}:${scoreData!.detail!.average ?? ''}', - '${ap.rank}:${scoreData!.detail!.classRank ?? ''}', - '${ap.percentage}:${scoreData!.detail!.classPercentage ?? ''}', + '${scoreData!.detail.creditTaken ?? ''}' + '${scoreData!.detail.isCreditEmpty ? '' : ' / '}' + '${scoreData!.detail.creditEarned ?? ''}', + '${ap.average}:${scoreData!.detail.average ?? ''}', + '${ap.rank}:${scoreData!.detail.classRank ?? ''}', + '${ap.percentage}:${scoreData!.detail.classPercentage ?? ''}', ], ); } @@ -126,13 +125,15 @@ class ScorePageState extends State { Function(DioError e) get _onFailure => (DioError e) => setState(() { state = ScoreState.error; switch (e.type) { - case DioErrorType.connectTimeout: + case DioErrorType.connectionError: + case DioErrorType.connectionTimeout: case DioErrorType.sendTimeout: case DioErrorType.receiveTimeout: - case DioErrorType.response: + case DioErrorType.badResponse: case DioErrorType.cancel: + case DioErrorType.badCertificate: break; - case DioErrorType.other: + case DioErrorType.unknown: throw e; } }); @@ -178,7 +179,7 @@ class ScorePageState extends State { scoreData = data; if (mounted && scoreData != null) { setState(() { - if (scoreData!.scores == null || scoreData!.scores!.isEmpty) { + if (scoreData!.scores.isEmpty) { state = ScoreState.empty; } else { state = ScoreState.finish; diff --git a/lib/pages/tuition_and_fees_page.dart b/lib/pages/tuition_and_fees_page.dart index a5d2e64..facb39d 100644 --- a/lib/pages/tuition_and_fees_page.dart +++ b/lib/pages/tuition_and_fees_page.dart @@ -189,13 +189,15 @@ class _TuitionAndFeesPageState extends State { Function(DioError) get _onFailure => (DioError e) => setState(() { state = _State.error; switch (e.type) { - case DioErrorType.connectTimeout: + case DioErrorType.connectionTimeout: + case DioErrorType.connectionError: case DioErrorType.sendTimeout: case DioErrorType.receiveTimeout: - case DioErrorType.response: + case DioErrorType.badResponse: case DioErrorType.cancel: + case DioErrorType.badCertificate: break; - case DioErrorType.other: + case DioErrorType.unknown: throw e; } }); diff --git a/lib/utils/big5/big5.dart b/lib/utils/big5/big5.dart index 920ee54..e9d66eb 100644 --- a/lib/utils/big5/big5.dart +++ b/lib/utils/big5/big5.dart @@ -1,9 +1,7 @@ -library big5; - -part 'table.dart'; - // only non-sream version +import 'package:nsysu_ap/utils/big5/table.dart'; + const Big5Codec big5 = Big5Codec(); class Big5Codec { diff --git a/lib/utils/big5/table.dart b/lib/utils/big5/table.dart index 03aeb0e..dc9b556 100644 --- a/lib/utils/big5/table.dart +++ b/lib/utils/big5/table.dart @@ -1,5 +1,3 @@ -part of big5; - // this decode table is copy from https://gist.github.com/shiedman/5477198 // decode table line 13 // encode0 table line 13729 diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 184e5bc..e616479 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -14,7 +14,7 @@ import firebase_messaging import firebase_remote_config import flutter_local_notifications import in_app_review -import package_info_plus_macos +import package_info_plus import path_provider_macos import photo_manager import printing diff --git a/macos/Podfile.lock b/macos/Podfile.lock index a89bc7a..2768a48 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -3,151 +3,156 @@ PODS: - FlutterMacOS - file_selector_macos (0.0.1): - FlutterMacOS - - Firebase/Analytics (9.3.0): + - Firebase/Analytics (10.9.0): - Firebase/Core - - Firebase/Core (9.3.0): + - Firebase/Core (10.9.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 9.3.0) - - Firebase/CoreOnly (9.3.0): - - FirebaseCore (= 9.3.0) - - Firebase/Crashlytics (9.3.0): + - FirebaseAnalytics (~> 10.9.0) + - Firebase/CoreOnly (10.9.0): + - FirebaseCore (= 10.9.0) + - Firebase/Crashlytics (10.9.0): - Firebase/CoreOnly - - FirebaseCrashlytics (~> 9.3.0) - - Firebase/Messaging (9.3.0): + - FirebaseCrashlytics (~> 10.9.0) + - Firebase/Messaging (10.9.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 9.3.0) - - Firebase/RemoteConfig (9.3.0): + - FirebaseMessaging (~> 10.9.0) + - Firebase/RemoteConfig (10.9.0): - Firebase/CoreOnly - - FirebaseRemoteConfig (~> 9.3.0) - - firebase_analytics (9.3.1): - - Firebase/Analytics (= 9.3.0) + - FirebaseRemoteConfig (~> 10.9.0) + - firebase_analytics (10.4.2): + - Firebase/Analytics (= 10.9.0) - firebase_core - FlutterMacOS - - firebase_core (1.20.1): - - Firebase/CoreOnly (~> 9.3.0) + - firebase_core (2.13.1): + - Firebase/CoreOnly (~> 10.9.0) - FlutterMacOS - - firebase_crashlytics (2.8.7): - - Firebase/CoreOnly (~> 9.3.0) - - Firebase/Crashlytics (~> 9.3.0) + - firebase_crashlytics (3.3.2): + - Firebase/CoreOnly (~> 10.9.0) + - Firebase/Crashlytics (~> 10.9.0) - firebase_core - FlutterMacOS - - firebase_messaging (12.0.2): - - Firebase/CoreOnly (~> 9.3.0) - - Firebase/Messaging (~> 9.3.0) + - firebase_messaging (14.6.2): + - Firebase/CoreOnly (~> 10.9.0) + - Firebase/Messaging (~> 10.9.0) - firebase_core - FlutterMacOS - - firebase_remote_config (2.0.14): - - Firebase/CoreOnly (~> 9.3.0) - - Firebase/RemoteConfig (~> 9.3.0) + - firebase_remote_config (4.2.2): + - Firebase/CoreOnly (~> 10.9.0) + - Firebase/RemoteConfig (~> 10.9.0) - firebase_core - FlutterMacOS - - FirebaseABTesting (9.4.0): - - FirebaseCore (~> 9.0) - - FirebaseAnalytics (9.3.0): - - FirebaseAnalytics/AdIdSupport (= 9.3.0) - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseABTesting (10.10.0): + - FirebaseCore (~> 10.0) + - FirebaseAnalytics (10.9.0): + - FirebaseAnalytics/AdIdSupport (= 10.9.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleAppMeasurement (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseAnalytics/AdIdSupport (10.9.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleAppMeasurement (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (9.3.0): - - FirebaseCoreDiagnostics (~> 9.0) - - FirebaseCoreInternal (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - FirebaseCoreDiagnostics (9.4.0): - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Logger (~> 7.7) - - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCoreInternal (9.4.0): - - "GoogleUtilities/NSData+zlib (~> 7.7)" - - FirebaseCrashlytics (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/Environment (~> 7.7) + - FirebaseCore (10.9.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreExtension (10.10.0): + - FirebaseCore (~> 10.0) + - FirebaseCoreInternal (10.10.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseCrashlytics (10.9.0): + - FirebaseCore (~> 10.5) + - FirebaseInstallations (~> 10.0) + - FirebaseSessions (~> 10.5) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/Environment (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (~> 2.1) - - FirebaseInstallations (9.4.0): - - FirebaseCore (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseInstallations (10.10.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (9.3.0): - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleDataTransport (< 10.0.0, >= 9.1.4) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/Environment (~> 7.7) - - GoogleUtilities/Reachability (~> 7.7) - - GoogleUtilities/UserDefaults (~> 7.7) + - FirebaseMessaging (10.9.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseRemoteConfig (9.3.0): - - FirebaseABTesting (~> 9.0) - - FirebaseCore (~> 9.0) - - FirebaseInstallations (~> 9.0) - - GoogleUtilities/Environment (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - FirebaseRemoteConfig (10.9.0): + - FirebaseABTesting (~> 10.0) + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseSessions (10.10.0): + - FirebaseCore (~> 10.5) + - FirebaseCoreExtension (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/Environment (~> 7.10) + - nanopb (< 2.30910.0, >= 2.30908.0) + - PromisesSwift (~> 2.1) - flutter_local_notifications (0.0.1): - FlutterMacOS - FlutterMacOS (1.0.0) - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - - GoogleAppMeasurement (9.3.0): - - GoogleAppMeasurement/AdIdSupport (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement (10.9.0): + - GoogleAppMeasurement/AdIdSupport (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (9.3.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 9.3.0) - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/AdIdSupport (10.9.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (9.3.0): - - GoogleUtilities/AppDelegateSwizzler (~> 7.7) - - GoogleUtilities/MethodSwizzler (~> 7.7) - - GoogleUtilities/Network (~> 7.7) - - "GoogleUtilities/NSData+zlib (~> 7.7)" + - GoogleAppMeasurement/WithoutAdIdSupport (10.9.0): + - GoogleUtilities/AppDelegateSwizzler (~> 7.11) + - GoogleUtilities/MethodSwizzler (~> 7.11) + - GoogleUtilities/Network (~> 7.11) + - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleDataTransport (9.2.0): + - GoogleDataTransport (9.2.3): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.7.0): + - GoogleUtilities/AppDelegateSwizzler (7.11.1): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.7.0): + - GoogleUtilities/Environment (7.11.1): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.7.0): + - GoogleUtilities/Logger (7.11.1): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.7.0): + - GoogleUtilities/MethodSwizzler (7.11.1): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.7.0): + - GoogleUtilities/Network (7.11.1): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.7.0)" - - GoogleUtilities/Reachability (7.7.0): + - "GoogleUtilities/NSData+zlib (7.11.1)" + - GoogleUtilities/Reachability (7.11.1): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.7.0): + - GoogleUtilities/UserDefaults (7.11.1): - GoogleUtilities/Logger - in_app_review (0.2.0): - FlutterMacOS @@ -156,7 +161,7 @@ PODS: - nanopb/encode (= 2.30909.0) - nanopb/decode (2.30909.0) - nanopb/encode (2.30909.0) - - package_info_plus_macos (0.0.1): + - package_info_plus (0.0.1): - FlutterMacOS - path_provider_macos (0.0.1): - FlutterMacOS @@ -165,7 +170,9 @@ PODS: - FlutterMacOS - printing (1.0.0): - FlutterMacOS - - PromisesObjC (2.1.1) + - PromisesObjC (2.2.0) + - PromisesSwift (2.2.0): + - PromisesObjC (= 2.2.0) - share_plus_macos (0.0.1): - FlutterMacOS - shared_preferences_macos (0.0.1): @@ -189,7 +196,7 @@ DEPENDENCIES: - flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - in_app_review (from `Flutter/ephemeral/.symlinks/plugins/in_app_review/macos`) - - package_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos`) + - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - photo_manager (from `Flutter/ephemeral/.symlinks/plugins/photo_manager/macos`) - printing (from `Flutter/ephemeral/.symlinks/plugins/printing/macos`) @@ -205,18 +212,20 @@ SPEC REPOS: - FirebaseABTesting - FirebaseAnalytics - FirebaseCore - - FirebaseCoreDiagnostics + - FirebaseCoreExtension - FirebaseCoreInternal - FirebaseCrashlytics - FirebaseInstallations - FirebaseMessaging - FirebaseRemoteConfig + - FirebaseSessions - FMDB - GoogleAppMeasurement - GoogleDataTransport - GoogleUtilities - nanopb - PromisesObjC + - PromisesSwift EXTERNAL SOURCES: desktop_webview_window: @@ -239,8 +248,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral in_app_review: :path: Flutter/ephemeral/.symlinks/plugins/in_app_review/macos - package_info_plus_macos: - :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos + package_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos path_provider_macos: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos photo_manager: @@ -261,34 +270,36 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: desktop_webview_window: d4365e71bcd4e1aa0c14cf0377aa24db0c16a7e2 file_selector_macos: f1b08a781e66103e3ba279fd5d4024a2478b3af6 - Firebase: ef75abb1cdbc746d5a38f4e26c422c807b189b8c - firebase_analytics: 7223eb68c982e3d3c441daecd6a3b93366b876a2 - firebase_core: 9b95e859a721511ad34fbaa4248fb6a49a6178b2 - firebase_crashlytics: 417c5e27133b02c88fd5828f53c6f922da7c4cc5 - firebase_messaging: cc47614a079d98cf84d01398a00a933ee314dfa6 - firebase_remote_config: d80dab14204e518d58d196135a0e70282855fb67 - FirebaseABTesting: e59eec91fafce74a0f5261809ed0025b7e450db1 - FirebaseAnalytics: bf46f5163f44097ce2c789de0b3e6f87f1da834a - FirebaseCore: c088995ece701a021a48a1348ea0174877de2a6a - FirebaseCoreDiagnostics: aaa87098082c4d4bdd1a9557b1186d18ca85ce8c - FirebaseCoreInternal: a13302b0088fbf5f38b79b6ece49c2af7d3e05d6 - FirebaseCrashlytics: 65a5b349e664e986e6c7486b0a9b5ed8c11d0491 - FirebaseInstallations: 61db1054e688d2bdc4e2b3f744c1b086e913b742 - FirebaseMessaging: 2f6e38b6133059eb796ec224104f09379298a8c3 - FirebaseRemoteConfig: 0a644c924b3339bcf3bc3ea253206f171672308e + Firebase: bd152f0f3d278c4060c5c71359db08ebcfd5a3e2 + firebase_analytics: f088393712d56cb3a9380d94a3143a0a6c8b8b49 + firebase_core: bef54c6955ffe824bb73ec34090f4013b6921bc1 + firebase_crashlytics: effbfab05bc829de381d0ff731114800cd473990 + firebase_messaging: 5fb518ebbce926b8828c283509d68da4cf238eac + firebase_remote_config: 8ae9580fce792eaa5a5277d8accf225cd86dc11d + FirebaseABTesting: b2a87808d90f02766fcffb3957d3e397e7accc15 + FirebaseAnalytics: 5ea0db4893825e7b0149d575352cd838236313dc + FirebaseCore: b68d3616526ec02e4d155166bbafb8eca64af557 + FirebaseCoreExtension: 8d93ebbf6838a874b4ed82a564c9d6705f8365dd + FirebaseCoreInternal: 971029061d326000d65bfdc21f5502c75c8b0893 + FirebaseCrashlytics: b60329455285aff853e54139d8ddbfe1e5f2b9f9 + FirebaseInstallations: 52153982b057d3afcb4e1fbb3eb0b6d00611e681 + FirebaseMessaging: 6b7052cc3da7bc8e5f72bef871243e8f04a14eed + FirebaseRemoteConfig: 5ea5834e8c518f377bf1af2d97ebd611914ebf2d + FirebaseSessions: 5f9e62cd4096e24d2011cbd845b0efceffaee1ec flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4 - FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - GoogleAppMeasurement: b907bdad775b6975a8108762345b2cfbf1a93c37 - GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f - GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 + GoogleAppMeasurement: 373bcbead1bb6a85be7a64d5d8f96284b762ea9c + GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd + GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 in_app_review: a850789fad746e89bce03d4aeee8078b45a53fd0 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 - package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c + package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19 photo_manager: 4f6810b7dfc4feb03b461ac1a70dacf91fba7604 - printing: e4b7e232ff3d5d50a70b20d959aa71035a5c31f9 - PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb + printing: 1dd6a1fce2209ec240698e2439a4adbb9b427637 + PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef + PromisesSwift: cf9eb58666a43bbe007302226e510b16c1e10959 share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4 shared_preferences_macos: a64dc611287ed6cbe28fd1297898db1336975727 sign_in_with_apple: a9e97e744e8edc36aefc2723111f652102a7a727 @@ -297,4 +308,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 0d3963a09fc94f580682bd88480486da345dc3f0 -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.1 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index c1a8c9d..ed8d60e 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -217,7 +217,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = "Google LLC"; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -273,6 +273,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -338,21 +339,23 @@ "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", "${BUILT_PRODUCTS_DIR}/FirebaseABTesting/FirebaseABTesting.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCore/FirebaseCore.framework", - "${BUILT_PRODUCTS_DIR}/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseCoreExtension/FirebaseCoreExtension.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework", "${BUILT_PRODUCTS_DIR}/FirebaseCrashlytics/FirebaseCrashlytics.framework", "${BUILT_PRODUCTS_DIR}/FirebaseInstallations/FirebaseInstallations.framework", "${BUILT_PRODUCTS_DIR}/FirebaseMessaging/FirebaseMessaging.framework", "${BUILT_PRODUCTS_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework", + "${BUILT_PRODUCTS_DIR}/FirebaseSessions/FirebaseSessions.framework", "${BUILT_PRODUCTS_DIR}/GoogleDataTransport/GoogleDataTransport.framework", "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework", + "${BUILT_PRODUCTS_DIR}/PromisesSwift/Promises.framework", "${BUILT_PRODUCTS_DIR}/desktop_webview_window/desktop_webview_window.framework", "${BUILT_PRODUCTS_DIR}/file_selector_macos/file_selector_macos.framework", "${BUILT_PRODUCTS_DIR}/flutter_local_notifications/flutter_local_notifications.framework", "${BUILT_PRODUCTS_DIR}/in_app_review/in_app_review.framework", "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", - "${BUILT_PRODUCTS_DIR}/package_info_plus_macos/package_info_plus_macos.framework", + "${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework", "${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework", "${BUILT_PRODUCTS_DIR}/photo_manager/photo_manager.framework", "${BUILT_PRODUCTS_DIR}/printing/printing.framework", @@ -367,21 +370,23 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseABTesting.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCore.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreDiagnostics.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreExtension.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCoreInternal.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseCrashlytics.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseInstallations.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseMessaging.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseRemoteConfig.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FirebaseSessions.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleDataTransport.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Promises.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/desktop_webview_window.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_selector_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_local_notifications.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/in_app_review.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus_macos.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/photo_manager.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/printing.framework", @@ -510,7 +515,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.12; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -538,7 +543,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -597,7 +602,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.12; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -645,7 +650,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.12; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -673,7 +678,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -700,7 +705,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index b62063a..7934074 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ =2.17.0 <3.0.0" - flutter: ">=3.0.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 98b5a9b..5eb634c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,8 +14,8 @@ dependencies: intl: ^0.17.0 multiple_localization: ^0.3.0 - ap_common: ^0.22.0-dev.1 - ap_common_firebase: ^0.15.0 + ap_common: ^0.23.0-dev.0 + ap_common_firebase: ^0.16.0-dev.0 ap_common_plugin: 0.4.0 # path: ../ap_common_plugin @@ -28,10 +28,10 @@ dependencies: encrypt: ^5.0.0 sprintf: ^6.0.0 crypto: ^3.0.1 - dio: ^4.0.0 - dio_cookie_manager: ^2.0.0 - cookie_jar: ^3.0.1 - flutter_inappwebview: ^5.4.3+7 + dio: ^5.0.0 + dio_cookie_manager: ^3.0.0 + cookie_jar: ^4.0.3 + flutter_inappwebview: ^5.7.2+3 desktop_webview_window: ^0.1.6 webview_windows: ^0.2.0 timeago: ^3.0.2 @@ -43,15 +43,16 @@ dev_dependencies: flutter_test: sdk: flutter - lint: ^1.8.2 + lint: ^2.1.2 build_runner: ^2.1.5 json_serializable: ^6.0.1 -#dependency_overrides: +dependency_overrides: # ap_common: # path: ../../GitHub-NKUST-ITC/ap_common # ap_common_firebase: # path: ../ap_common_firebase + intl: 0.18.0 flutter: diff --git a/scripts/zip_dev_configs.sh b/scripts/zip_dev_configs.sh index 1487f04..b8a0485 100644 --- a/scripts/zip_dev_configs.sh +++ b/scripts/zip_dev_configs.sh @@ -4,5 +4,7 @@ zip -r dev_configs.zip \ lib/firebase_options.dart \ lib/config/sdk_constants.dart \ android/app/google-services.json \ + ios/Runner/GoogleService-Info.plist \ ios/firebase_app_id_file.json \ + macos/Runner/GoogleService-Info.plist \ macos/firebase_app_id_file.json \ No newline at end of file diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 26dcce9..c7c7737 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -17,6 +18,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); PrintingPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PrintingPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index e90d074..6459ca0 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST desktop_webview_window file_selector_windows + firebase_core printing url_launcher_windows webview_windows