diff --git a/.circleci/config.yml b/.circleci/config.yml index 979f57a8c..f6379f0c2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -40,7 +40,7 @@ commands: steps: - run: command: |- - curl -o dart.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.0.5/linux_packages/dart_3.0.5-1_amd64.deb + curl -o dart.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.3.1/linux_packages/dart_3.3.1-1_amd64.deb sudo dpkg -i dart.deb name: Install Dart install_dart_mac: @@ -296,7 +296,7 @@ jobs: working_directory: ~/project build_android: docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node environment: GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx2048m" -Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2 parameters: @@ -692,7 +692,7 @@ jobs: - notify deliver_android: docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node environment: FASTLANE_SKIP_UPDATE_CHECK: true parameters: @@ -906,7 +906,7 @@ jobs: working_directory: ~/project/administration promote_android: docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node environment: FASTLANE_SKIP_UPDATE_CHECK: true parameters: diff --git a/.circleci/src/commands/install_dart_linux.yml b/.circleci/src/commands/install_dart_linux.yml index a4afe2b56..aa31f5294 100644 --- a/.circleci/src/commands/install_dart_linux.yml +++ b/.circleci/src/commands/install_dart_linux.yml @@ -2,5 +2,5 @@ steps: - run: name: Install Dart command: | - curl -o dart.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.0.5/linux_packages/dart_3.0.5-1_amd64.deb + curl -o dart.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.3.1/linux_packages/dart_3.3.1-1_amd64.deb sudo dpkg -i dart.deb \ No newline at end of file diff --git a/.circleci/src/jobs/build_android.yml b/.circleci/src/jobs/build_android.yml index 2acf710e0..3988865e7 100644 --- a/.circleci/src/jobs/build_android.yml +++ b/.circleci/src/jobs/build_android.yml @@ -1,5 +1,5 @@ docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node parameters: buildConfig: description: "Name of the build config to use" diff --git a/.circleci/src/jobs/deliver_android.yml b/.circleci/src/jobs/deliver_android.yml index e34736b5a..7c2437460 100644 --- a/.circleci/src/jobs/deliver_android.yml +++ b/.circleci/src/jobs/deliver_android.yml @@ -7,7 +7,7 @@ parameters: description: Whether to deliver the build to production. type: boolean docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node resource_class: small shell: /bin/bash -eo pipefail environment: diff --git a/.circleci/src/jobs/promote_android.yml b/.circleci/src/jobs/promote_android.yml index bcb1de00d..8f871712b 100644 --- a/.circleci/src/jobs/promote_android.yml +++ b/.circleci/src/jobs/promote_android.yml @@ -5,7 +5,7 @@ parameters: enum: [bayern, nuernberg] default: bayern docker: - - image: cimg/android:2023.02.1-node + - image: cimg/android:2024.01.1-node resource_class: small shell: /bin/bash -eo pipefail environment: diff --git a/frontend/.fvm/fvm_config.json b/frontend/.fvm/fvm_config.json index 0e8090af0..36eb0ad1c 100644 --- a/frontend/.fvm/fvm_config.json +++ b/frontend/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.10.2", + "flutterSdkVersion": "3.19.3", "flavors": {} } \ No newline at end of file diff --git a/frontend/android/app/build.gradle b/frontend/android/app/build.gradle index f9ff8ffca..72a43b392 100644 --- a/frontend/android/app/build.gradle +++ b/frontend/android/app/build.gradle @@ -141,7 +141,7 @@ android { defaultConfig { minSdkVersion 21 - targetSdkVersion 33 + targetSdkVersion 34 multiDexEnabled true versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/frontend/android/gradle/wrapper/gradle-wrapper.jar b/frontend/android/gradle/wrapper/gradle-wrapper.jar index 249e5832f..943f0cbfa 100644 Binary files a/frontend/android/gradle/wrapper/gradle-wrapper.jar and b/frontend/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/frontend/android/gradle/wrapper/gradle-wrapper.properties b/frontend/android/gradle/wrapper/gradle-wrapper.properties index 070cb702f..744c64d12 100644 --- a/frontend/android/gradle/wrapper/gradle-wrapper.properties +++ b/frontend/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/frontend/android/gradlew b/frontend/android/gradlew index a69d9cb6c..65dcd68d6 100755 --- a/frontend/android/gradlew +++ b/frontend/android/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac diff --git a/frontend/android/gradlew.bat b/frontend/android/gradlew.bat index f127cfd49..93e3f59f1 100644 --- a/frontend/android/gradlew.bat +++ b/frontend/android/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/frontend/lib/home/app_flows_stack.dart b/frontend/lib/home/app_flows_stack.dart index 1a8099126..b02605ff4 100644 --- a/frontend/lib/home/app_flows_stack.dart +++ b/frontend/lib/home/app_flows_stack.dart @@ -10,16 +10,9 @@ class AppFlowsStack extends StatelessWidget { @override Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async { - final currentState = appFlows[currentIndex].navigatorKey.currentState; - final currentStatePopped = await currentState?.maybePop() ?? false; - return !currentStatePopped; - }, - child: IndexedStack( - index: currentIndex, - children: _buildChildren(), - ), + return IndexedStack( + index: currentIndex, + children: _buildChildren(), ); } diff --git a/frontend/lib/identification/activation_workflow/activation_code_scanner_page.dart b/frontend/lib/identification/activation_workflow/activation_code_scanner_page.dart index 6338828c6..76c2fb5c2 100644 --- a/frontend/lib/identification/activation_workflow/activation_code_scanner_page.dart +++ b/frontend/lib/identification/activation_workflow/activation_code_scanner_page.dart @@ -37,7 +37,7 @@ class ActivationCodeScannerPage extends StatelessWidget { Future _onCodeScanned(BuildContext context, Uint8List code) async { Future showError(String msg, dynamic stackTrace) async => - {await QrParsingErrorDialog.showErrorDialog(context, msg), await reportError(msg, stackTrace)}; + [await QrParsingErrorDialog.showErrorDialog(context, msg), await reportError(msg, stackTrace)]; try { final activationCode = const ActivationCodeParser().parseQrCodeContent(code); diff --git a/frontend/lib/identification/id_card/id_card.dart b/frontend/lib/identification/id_card/id_card.dart index 153900de4..f3df93d8d 100644 --- a/frontend/lib/identification/id_card/id_card.dart +++ b/frontend/lib/identification/id_card/id_card.dart @@ -40,7 +40,7 @@ class IdCard extends StatelessWidget { aspectRatio: creditCardAspectRatio, child: MediaQuery( // Ignore text scale factor to enforce the same layout on all devices. - data: mediaQueryData.copyWith(textScaleFactor: 1), + data: mediaQueryData.copyWith(textScaler: TextScaler.linear(1)), child: CardContent(cardInfo: cardInfo, region: region, isExpired: isExpired, isNotYetValid: isNotYetValid), ), ), diff --git a/frontend/pubspec.yaml b/frontend/pubspec.yaml index 41c7bb952..dc5735637 100644 --- a/frontend/pubspec.yaml +++ b/frontend/pubspec.yaml @@ -26,7 +26,7 @@ dependencies: flutter_svg: ^2.0.2 permission_handler: ^11.3.0 package_info_plus: ^4.0.1 # for about dialog - mobile_scanner: ^4.0.1 # Pinning this version because of https://github.com/juliansteenbakker/mobile_scanner/issues/582 + mobile_scanner: ^4.0.1 fixnum: ^1.1.0 flutter_secure_storage: ^9.0.0 infinite_scroll_pagination: ^4.0.0