From 47b4c85133324496392e5c05abf5c09f037f44d0 Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Thu, 28 Aug 2025 10:45:58 +0200 Subject: [PATCH] Fehlerkorrekturen und Erweiterungen --- .../arm64-v8a/configure_fingerprint.bin | 24 ++--- .../armeabi-v7a/configure_fingerprint.bin | 24 ++--- .../2a1172u2/x86/configure_fingerprint.bin | 24 ++--- .../2a1172u2/x86_64/configure_fingerprint.bin | 24 ++--- lib/content_views/approach_area_page.dart | 2 +- lib/content_views/assigned_jobs_page.dart | 2 +- lib/content_views/main_page.dart | 2 +- lib/content_views/task_list_page.dart | 34 +++--- lib/main.dart | 22 +++- lib/popups/accept_jobs_popup.dart | 2 +- lib/popups/infos_popup.dart | 100 ++++++++++-------- lib/tools/mqtt_core.dart | 15 ++- pubspec.lock | 2 +- pubspec.yaml | 3 +- 14 files changed, 155 insertions(+), 125 deletions(-) diff --git a/android/app/.cxx/Debug/2a1172u2/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/2a1172u2/arm64-v8a/configure_fingerprint.bin index d7e1f88..509245a 100644 --- a/android/app/.cxx/Debug/2a1172u2/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/2a1172u2/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log Ž ‹/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint   ώσ΅Œ3  Λ‹·Τ2Ž +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  …™ΪώŽ3  Λ‹·Τ2Ž ‹ -ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/android_gradle_build.json   ώσ΅Œ3Α Ν‹·Τ2“ +ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/android_gradle_build.json  …™ΪώŽ3Α Ν‹·Τ2“  -/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/android_gradle_build_mini.json   ώσ΅Œ3Έ Ξ‹·Τ2~ +/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/android_gradle_build_mini.json  …™ΪώŽ3Έ Ξ‹·Τ2~ | -z/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build.ninja   ώσ΅Œ3€Φ ΐ‹·Τ2ƒ +z/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build.ninja  …™ΪώŽ3€Φ ΐ‹·Τ2ƒ € -~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build.ninja.txt   ώσ΅Œ3‰ +~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build.ninja.txt  …™ΪώŽ3‰ † -ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build_file_index.txt   ώσ΅Œ3 f Ο‹·Τ2Š +ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/build_file_index.txt  …™ΪώŽ3 f Ο‹·Τ2Š ‡ -„/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/compile_commands.json   ώσ΅Œ3Ž +„/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/compile_commands.json  …™ΪώŽ3Ž ‹ -ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/compile_commands.json.bin   ώσ΅Œ3 ” +ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/compile_commands.json.bin  …™ΪώŽ3 ” ‘ -Ž/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/metadata_generation_command.txt   ώσ΅Œ3 +Ž/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/metadata_generation_command.txt  …™ΪώŽ3 Κ Ο‹·Τ2‡ „ -/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/prefab_config.json   ώσ΅Œ3  ( Ο‹·Τ2Œ +/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/prefab_config.json  …™ΪώŽ3  ( Ο‹·Τ2Œ ‰ -†/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/symbol_folder_index.txt   ώσ΅Œ3  } Ο‹·Τ2j +†/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/symbol_folder_index.txt  …™ΪώŽ3  } Ο‹·Τ2j h -f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt   ώσ΅Œ3 € ΚΝΚαΣ2 \ No newline at end of file +f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  …™ΪώŽ3 € ΚΝΚαΣ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/configure_fingerprint.bin index 7fe5bc8..c3a88e9 100644 --- a/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log  /Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¦ώσ΅Œ3  ¨‘·Τ2 +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ‰™ΪώŽ3  ¨‘·Τ2  -Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/android_gradle_build.json  ¦ώσ΅Œ3Ε ©‘·Τ2• +Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/android_gradle_build.json  ‰™ΪώŽ3Ε ©‘·Τ2• ’ -/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/android_gradle_build_mini.json  ¦ώσ΅Œ3Ό ©‘·Τ2€ +/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/android_gradle_build_mini.json  ‰™ΪώŽ3Ό ©‘·Τ2€ ~ -|/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build.ninja  ¦ώσ΅Œ3ŒΦ ‘‘·Τ2† +|/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build.ninja  ‰™ΪώŽ3ŒΦ ‘‘·Τ2† ƒ -€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build.ninja.txt  ¦ώσ΅Œ3‹ +€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build.ninja.txt  ‰™ΪώŽ3‹ ˆ -…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build_file_index.txt  ¦ώσ΅Œ3 f ©‘·Τ2Œ +…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/build_file_index.txt  ‰™ΪώŽ3 f ©‘·Τ2Œ ‰ -†/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/compile_commands.json  ¦ώσ΅Œ3 +†/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/compile_commands.json  ‰™ΪώŽ3  -Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/compile_commands.json.bin  ¦ώσ΅Œ3 – +Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/compile_commands.json.bin  ‰™ΪώŽ3 – “ -/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/metadata_generation_command.txt  ¦ώσ΅Œ3 +/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/metadata_generation_command.txt  ‰™ΪώŽ3 Τ ©‘·Τ2‰ † -ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/prefab_config.json  ¦ώσ΅Œ3  ( ©‘·Τ2Ž +ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/prefab_config.json  ‰™ΪώŽ3  ( ©‘·Τ2Ž ‹ -ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/symbol_folder_index.txt  ¦ώσ΅Œ3   ©‘·Τ2j +ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/symbol_folder_index.txt  ‰™ΪώŽ3   ©‘·Τ2j h -f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¦ώσ΅Œ3 € ΚΝΚαΣ2 \ No newline at end of file +f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ‰™ΪώŽ3 € ΚΝΚαΣ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2a1172u2/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/2a1172u2/x86/configure_fingerprint.bin index a83a850..f5fc505 100644 --- a/android/app/.cxx/Debug/2a1172u2/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/2a1172u2/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log ˆ …/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  «ώσ΅Œ3  ₯“·Τ2ˆ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Œ™ΪώŽ3  ₯“·Τ2ˆ … -‚/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/android_gradle_build.json  «ώσ΅Œ3΅ ₯“·Τ2 +‚/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/android_gradle_build.json  Œ™ΪώŽ3΅ ₯“·Τ2 Š -‡/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/android_gradle_build_mini.json  «ώσ΅Œ3¬ ₯“·Τ2x +‡/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/android_gradle_build_mini.json  Œ™ΪώŽ3¬ ₯“·Τ2x v -t/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build.ninja  «ώσ΅Œ3άΥ ž“·Τ2| +t/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build.ninja  Œ™ΪώŽ3άΥ ž“·Τ2| z -x/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build.ninja.txt  «ώσ΅Œ3 +x/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build.ninja.txt  Œ™ΪώŽ3  -}/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build_file_index.txt  «ώσ΅Œ3 f ¦“·Τ2ƒ +}/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/build_file_index.txt  Œ™ΪώŽ3 f ¦“·Τ2ƒ € -~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/compile_commands.json  «ώσ΅Œ3ˆ +~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/compile_commands.json  Œ™ΪώŽ3ˆ … -‚/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/compile_commands.json.bin  «ώσ΅Œ3 Ž +‚/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/compile_commands.json.bin  Œ™ΪώŽ3 Ž ‹ -ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/metadata_generation_command.txt  «ώσ΅Œ3 +ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/metadata_generation_command.txt  Œ™ΪώŽ3 ¬ ¦“·Τ2 } -{/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/prefab_config.json  «ώσ΅Œ3  ( ¦“·Τ2† +{/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/prefab_config.json  Œ™ΪώŽ3  ( ¦“·Τ2† ƒ -€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/symbol_folder_index.txt  «ώσ΅Œ3  w ¦“·Τ2j +€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/symbol_folder_index.txt  Œ™ΪώŽ3  w ¦“·Τ2j h -f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  «ώσ΅Œ3 € ΚΝΚαΣ2 \ No newline at end of file +f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Œ™ΪώŽ3 € ΚΝΚαΣ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/2a1172u2/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/2a1172u2/x86_64/configure_fingerprint.bin index 39edf95..ef3037a 100644 --- a/android/app/.cxx/Debug/2a1172u2/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/2a1172u2/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log ‹ ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ―ώσ΅Œ3  ”•·Τ2‹ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ™ΪώŽ3  ”•·Τ2‹ ˆ -…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/android_gradle_build.json  ―ώσ΅Œ3» ••·Τ2 +…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/android_gradle_build.json  ™ΪώŽ3» ••·Τ2  -Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/android_gradle_build_mini.json  ―ώσ΅Œ3² ••·Τ2{ +Š/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/android_gradle_build_mini.json  ™ΪώŽ3² ••·Τ2{ y -w/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build.ninja  ―ώσ΅Œ3ξΥ Ž•·Τ2 +w/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build.ninja  ™ΪώŽ3ξΥ Ž•·Τ2 } -{/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build.ninja.txt  ―ώσ΅Œ3† +{/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build.ninja.txt  ™ΪώŽ3† ƒ -€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build_file_index.txt  ―ώσ΅Œ3 f –•·Τ2‡ +€/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/build_file_index.txt  ™ΪώŽ3 f –•·Τ2‡ „ -/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/compile_commands.json  ―ώσ΅Œ3‹ +/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/compile_commands.json  ™ΪώŽ3‹ ˆ -…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/compile_commands.json.bin  ―ώσ΅Œ3 ‘ +…/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/compile_commands.json.bin  ™ΪώŽ3 ‘ Ž -‹/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/metadata_generation_command.txt  ―ώσ΅Œ3 +‹/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/metadata_generation_command.txt  ™ΪώŽ3 » ••·Τ2ƒ € -~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/prefab_config.json  ―ώσ΅Œ3  ( ••·Τ2‰ +~/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/prefab_config.json  ™ΪώŽ3  ( ••·Τ2‰ † -ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/symbol_folder_index.txt  ―ώσ΅Œ3  z –•·Τ2j +ƒ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/symbol_folder_index.txt  ™ΪώŽ3  z –•·Τ2j h -f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ―ώσ΅Œ3 € ΚΝΚαΣ2 \ No newline at end of file +f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ™ΪώŽ3 € ΚΝΚαΣ2 \ No newline at end of file diff --git a/lib/content_views/approach_area_page.dart b/lib/content_views/approach_area_page.dart index 1dee685..a6057c6 100644 --- a/lib/content_views/approach_area_page.dart +++ b/lib/content_views/approach_area_page.dart @@ -178,7 +178,7 @@ class _ApproachAreaPageState extends State with ProducerMixin, } _sendZip(Rank rank, String zip) async { - var position = MyApp.currentPosition; + var position = await MyApp.getCurrentPosition(); var setPosMessage = ZipSetPos(); setPosMessage.zip = zip; diff --git a/lib/content_views/assigned_jobs_page.dart b/lib/content_views/assigned_jobs_page.dart index ed7e0eb..a62a8b4 100644 --- a/lib/content_views/assigned_jobs_page.dart +++ b/lib/content_views/assigned_jobs_page.dart @@ -216,7 +216,7 @@ class _AssignedJobsPageState extends State with ProducerMixin, } _sendAnswer(Job job, int item) async { - var currentPosition = MyApp.currentPosition; + var currentPosition = await MyApp.getCurrentPosition(); var message = Reaction(); message.id = job.id; diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index e5055fd..b536f50 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -401,7 +401,7 @@ class _MainPageState extends State with ConsumerMixin, ProducerMixin { } _sendLogoutMessage() async { - var position = MyApp.currentPosition; + var position = await MyApp.getCurrentPosition(); var logoutMessage = LogoutMessage(); if (position != null) { diff --git a/lib/content_views/task_list_page.dart b/lib/content_views/task_list_page.dart index eb36f54..61aa8b5 100644 --- a/lib/content_views/task_list_page.dart +++ b/lib/content_views/task_list_page.dart @@ -255,10 +255,10 @@ class _TaskListPageState extends State with ProducerMixin { _processTaskArrivedOrFinished(TaskInfo taskInfo) { Util.logInfo('Task ${taskInfo.task.sId} called'); - showTaskArrivedPopup(context, taskInfo, () { + showTaskArrivedPopup(context, taskInfo, () async { DateFormat dateFormat = DateFormat("dd.MM.yyyy HH:mm"); - var answer = _createAnswerHeader(taskInfo); + var answer = await _createAnswerHeader(taskInfo); taskInfo.answer = jsonEncode(answer.toJson()); taskInfo.additionalText = dateFormat.format(DateTime.now()); @@ -275,8 +275,8 @@ class _TaskListPageState extends State with ProducerMixin { _processCommissionNumber(TaskInfo taskInfo) { Util.logInfo('Task ${taskInfo.task.sId} called'); - showComissionNumberPopup(context, taskInfo, (comissionNumber) { - var answer = _createAnswerHeader(taskInfo); + showComissionNumberPopup(context, taskInfo, (comissionNumber) async { + var answer = await _createAnswerHeader(taskInfo); answer.val = comissionNumber; taskInfo.answer = jsonEncode(answer.toJson()); @@ -294,8 +294,8 @@ class _TaskListPageState extends State with ProducerMixin { /*_processScanBarcodes(TaskInfo taskInfo) { Util.logInfo('Task ${taskInfo.task.sId} called'); - showScanBarcodesPopup(context, taskInfo, (List barcodes) { - var answer = _createAnswerHeader(taskInfo); + showScanBarcodesPopup(context, taskInfo, (List barcodes) async { + var answer = await _createAnswerHeader(taskInfo); answer.codes = []; for(var barcode in barcodes) { answer.codes!.add(barcode); @@ -343,8 +343,8 @@ class _TaskListPageState extends State with ProducerMixin { void _processStationNotice(TaskInfo taskInfo) { Util.logInfo('Task ${taskInfo.task.sId} called'); - showStationNoticePopup(context, taskInfo, (notice) { - var answer = _createAnswerHeader(taskInfo); + showStationNoticePopup(context, taskInfo, (notice) async { + var answer = await _createAnswerHeader(taskInfo); answer.val = notice; taskInfo.answer = jsonEncode(answer.toJson()); @@ -360,8 +360,8 @@ class _TaskListPageState extends State with ProducerMixin { void _processReceiptGiver(TaskInfo taskInfo) { Util.logInfo('Task ${taskInfo.task.sId} called'); - showReceiptGiverPopup(context, taskInfo, (receiptGiver, selectedTourEntry) { - var answer = _createAnswerHeader(taskInfo); + showReceiptGiverPopup(context, taskInfo, (receiptGiver, selectedTourEntry) async { + var answer = await _createAnswerHeader(taskInfo); answer.code = selectedTourEntry.code; answer.val = receiptGiver; @@ -379,8 +379,8 @@ class _TaskListPageState extends State with ProducerMixin { Util.logInfo('Task ${taskInfo.task.sId} called'); Future.delayed(const Duration(seconds: 1), () async { - showPickupDeliveryStatusPopup(context, taskInfo, (tourEntry, remark) { - var answer = _createAnswerHeader(taskInfo); + showPickupDeliveryStatusPopup(context, taskInfo, (tourEntry, remark) async { + var answer = await _createAnswerHeader(taskInfo); answer.code = tourEntry!.code; answer.val = remark; @@ -409,7 +409,7 @@ class _TaskListPageState extends State with ProducerMixin { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); if (signature != null) { - var answer = _createAnswerHeader(taskInfo); + var answer = await _createAnswerHeader(taskInfo); answer.sign = signature; taskInfo.answer = jsonEncode(answer.toJson()); @@ -465,7 +465,7 @@ class _TaskListPageState extends State with ProducerMixin { message.task.sId = taskInfo.task.sId; message.task.time = DateTime.now().toIso8601String(); - var position = MyApp.currentPosition; + var position = await MyApp.getCurrentPosition(); if (position != null) { message.task.pos = FinTaskPos(); message.task.pos!.lat = position.latitude; @@ -480,8 +480,8 @@ class _TaskListPageState extends State with ProducerMixin { ); } - FinTourTask _createAnswerHeader(TaskInfo taskInfo) { - var position = MyApp.currentPosition; + Future _createAnswerHeader(TaskInfo taskInfo) async { + var position = await MyApp.getCurrentPosition(); var finTourTask = FinTourTask(); finTourTask.sId = taskInfo.task.sId; @@ -503,7 +503,7 @@ class _TaskListPageState extends State with ProducerMixin { finTourMessage.trId = widget.tour.id; finTourMessage.com = _commisionNumber; - var position = MyApp.currentPosition; + var position = await MyApp.getCurrentPosition(); if (position != null) { finTourMessage.track = Track(); finTourMessage.track!.time = DateTime.now().toIso8601String(); diff --git a/lib/main.dart b/lib/main.dart index e4934e1..b345070 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:dart_mq/dart_mq.dart'; +import 'package:synchronized/synchronized.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:isar/isar.dart'; @@ -100,10 +101,25 @@ class MyApp extends StatefulWidget { static late Isar isarInstance; - static Position? currentPosition; + static Position? _currentPosition; + static final Lock _positionLock = Lock(); static bool suppressAcceptDialog = false; + /// Thread-safe getter for current position + static Future getCurrentPosition() async { + return await _positionLock.synchronized(() { + return _currentPosition; + }); + } + + /// Thread-safe setter for current position + static Future setCurrentPosition(Position? position) async { + await _positionLock.synchronized(() { + _currentPosition = position; + }); + } + @override State createState() => _MyAppState(); } @@ -138,8 +154,8 @@ class _MyAppState extends State with ConsumerMixin { distanceFilter: 0, ); - Geolocator.getPositionStream(locationSettings: locationSettings).listen((Position? position) { - MyApp.currentPosition = position; + Geolocator.getPositionStream(locationSettings: locationSettings).listen((Position? position) async { + await MyApp.setCurrentPosition(position); }); } } diff --git a/lib/popups/accept_jobs_popup.dart b/lib/popups/accept_jobs_popup.dart index 1d876da..048f95c 100644 --- a/lib/popups/accept_jobs_popup.dart +++ b/lib/popups/accept_jobs_popup.dart @@ -368,7 +368,7 @@ Future> _fetchJobWidgets(StateSetter dialogState, Function() onFini } _sendAnswer(SharedMapReference mapReference, Job job, int item) async { - var currentPosition = MyApp.currentPosition; + var currentPosition = await MyApp.getCurrentPosition(); var message = Reaction(); message.id = job.id; diff --git a/lib/popups/infos_popup.dart b/lib/popups/infos_popup.dart index f242bdc..a40931b 100644 --- a/lib/popups/infos_popup.dart +++ b/lib/popups/infos_popup.dart @@ -17,11 +17,12 @@ void showInfosPopup(SessionStatus? status) async { shadowColor: Colors.transparent, backgroundColor: Colors.white, content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { - String getGpsStatustext() { + Future getGpsStatustext() async { String gpsStatus = "nicht verfΓΌgbar"; - if (MyApp.currentPosition != null) { + var currentPosition = await MyApp.getCurrentPosition(); + if (currentPosition != null) { var nowUtc = DateTime.now().toUtc(); - var minutesDelta = nowUtc.difference(MyApp.currentPosition!.timestamp); + var minutesDelta = nowUtc.difference(currentPosition.timestamp); if (minutesDelta >= const Duration(minutes: 15)) { gpsStatus = "veraltet"; @@ -32,51 +33,58 @@ void showInfosPopup(SessionStatus? status) async { return gpsStatus; } - var text = "Versionsnummer: a$version\n"; - text += "Verbindungsstatus: $connectedString\n"; - text += "GPS-Status: ${getGpsStatustext()}\n"; - text += "\n"; - text += "User Status:\n"; - if (status != null) { - text += "cr_id: ${status.crId}\n"; - text += "cust_id: ${status.custId}\n"; - text += "sid: ${status.sid}\n"; - text += "vht_id: ${status.vhtId}\n"; - text += "server_version: ${status.serverVersion}\n"; - text += "server_instance: ${status.serverInstance}\n"; - } else { - text += "Keine Informationen gefunden"; - } + return FutureBuilder( + future: getGpsStatustext(), + builder: (context, snapshot) { + String gpsStatus = snapshot.data ?? "wird geladen..."; + + var text = "Versionsnummer: a$version\n"; + text += "Verbindungsstatus: $connectedString\n"; + text += "GPS-Status: $gpsStatus\n"; + text += "\n"; + text += "User Status:\n"; + if (status != null) { + text += "cr_id: ${status.crId}\n"; + text += "cust_id: ${status.custId}\n"; + text += "sid: ${status.sid}\n"; + text += "vht_id: ${status.vhtId}\n"; + text += "server_version: ${status.serverVersion}\n"; + text += "server_instance: ${status.serverInstance}\n"; + } else { + text += "Keine Informationen gefunden"; + } - return SizedBox( - key: GlobalKey(), - height: 350, - width: MediaQuery.of(context).size.width * 0.8, - child: Container( - height: 100, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: Colors.white, - border: Border.all( - color: Colors.grey, - width: 1, - ), - ), - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - children: [ - Expanded(child: Text(text, textAlign: TextAlign.left)), - getDefaultButton( - 'OK', - () { - Navigator.pop(context); - }, + return SizedBox( + key: GlobalKey(), + height: 350, + width: MediaQuery.of(context).size.width * 0.8, + child: Container( + height: 100, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white, + border: Border.all( + color: Colors.grey, + width: 1, ), - ], - ), - ), - )); + ), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + Expanded(child: Text(text, textAlign: TextAlign.left)), + getDefaultButton( + 'OK', + () { + Navigator.pop(context); + }, + ), + ], + ), + ), + )); + }, + ); })); }); } diff --git a/lib/tools/mqtt_core.dart b/lib/tools/mqtt_core.dart index 9936ca1..383b723 100644 --- a/lib/tools/mqtt_core.dart +++ b/lib/tools/mqtt_core.dart @@ -591,7 +591,7 @@ class MqttCore with ProducerMixin, ConsumerMixin { } _sendSyncMessage() async { - var currentPosition = MyApp.currentPosition; + var currentPosition = await MyApp.getCurrentPosition(); var jobs = await MyApp.isarInstance.jobs.filter().stateGreaterThan(-1).findAll(); @@ -617,9 +617,11 @@ class MqttCore with ProducerMixin, ConsumerMixin { } void _startTrackTimer() { - _trackTimer ??= Timer.periodic(const Duration(seconds: 120), (Timer t) { + _cancelTrackTimer(); + + _trackTimer ??= Timer.periodic(const Duration(seconds: 120), (Timer t) async { try { - var position = MyApp.currentPosition; + var position = await MyApp.getCurrentPosition(); if (position != null) { var trackMessage = TrackPosition(); trackMessage.time = position.timestamp.toIso8601String(); @@ -636,8 +638,11 @@ class MqttCore with ProducerMixin, ConsumerMixin { } void _cancelTrackTimer() { - if (_trackTimer != null && _trackTimer!.isActive) { - _trackTimer!.cancel(); + if (_trackTimer != null) { + if (_trackTimer!.isActive) { + _trackTimer!.cancel(); + } + _trackTimer = null; } } diff --git a/pubspec.lock b/pubspec.lock index e419cfd..cf308c7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1326,7 +1326,7 @@ packages: source: hosted version: "1.4.1" synchronized: - dependency: transitive + dependency: "direct main" description: name: synchronized sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" diff --git a/pubspec.yaml b/pubspec.yaml index c89c3d0..835a12b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 338.0.0+338 +version: 339.0.0+339 environment: sdk: '>=2.19.6 <3.0.0' @@ -72,6 +72,7 @@ dependencies: permission_handler: ^11.4.0 dart_mq: ^1.1.0 intl: ^0.20.2 + synchronized: ^3.1.0 dev_dependencies: flutter_test: