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