Erweiterungen

This commit is contained in:
Sven committed 2025-08-20 11:11:34 +02:00
1 parent 52415e0759
commit 265d75a99b
10 files changed
+480 -405

No files matched your search

@@ -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 ‹/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/arm64-v8a/additional_project_files.txtC
A 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‡ Ê Ï‹·�Ô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 h
f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ó°«µŒ3␍¤ ÊÍÊáÓ2 f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt   þóµŒ3␍¤ ÊÍÊáÓ2
@@ -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 �/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/armeabi-v7a/additional_project_files.txtC
A 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‰ Ô ©‘·�Ô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 h
f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ݰ«µŒ3␍¤ ÊÍÊáÓ2 f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¦þóµŒ3␍¤ ÊÍÊáÓ2
@@ -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 …/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86/additional_project_files.txtC
A 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 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 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 ¬ ¦“·�Ô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 h
f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ä°«µŒ3␍¤ ÊÍÊáÓ2 f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  «þóµŒ3␍¤ ÊÍÊáÓ2
@@ -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 ˆ/Users/svencarstensen/Entwicklung/Source/flutter/Assecutor/stadtbote/android/app/.cxx/Debug/2a1172u2/x86_64/additional_project_files.txtC
A 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 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ƒ » ••·�Ô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 h
f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ê°«µŒ3␍¤ ÊÍÊáÓ2 f/Users/svencarstensen/Entwicklung/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¯þóµŒ3␍¤ ÊÍÊáÓ2
+65 -58
View File
@@ -25,7 +25,8 @@ class AcceptedJobsPage extends ContentViewWidget {
} }
} }
class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin { class _AcceptedJobsPageState extends State<AcceptedJobsPage>
with ProducerMixin {
late List<Job> _jobs; late List<Job> _jobs;
late bool _initCompleted = false; late bool _initCompleted = false;
@@ -33,7 +34,10 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin
@override @override
void initState() { void initState() {
Future.delayed(const Duration(seconds: 0), () async { Future.delayed(const Duration(seconds: 0), () async {
_jobs = await MyApp.isarInstance.jobs.filter().stateEqualTo(Constants.stateAccepted).findAll(); _jobs = await MyApp.isarInstance.jobs
.filter()
.stateEqualTo(Constants.stateAccepted)
.findAll();
_jobs.sort((job1, job2) { _jobs.sort((job1, job2) {
var date1 = DateTime.parse(job1.ordertime).millisecondsSinceEpoch; var date1 = DateTime.parse(job1.ordertime).millisecondsSinceEpoch;
var date2 = DateTime.parse(job2.ordertime).millisecondsSinceEpoch; var date2 = DateTime.parse(job2.ordertime).millisecondsSinceEpoch;
@@ -61,9 +65,7 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Scrollbar( child: Scrollbar(
thumbVisibility: true, thumbVisibility: true,
child: ListView( child: ListView(children: jobWidgets),
children: jobWidgets
),
), ),
); );
} }
@@ -72,53 +74,58 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin
List<Widget> jobWidgets = []; List<Widget> jobWidgets = [];
for (var job in _jobs) { for (var job in _jobs) {
var bottomText = "${job.id}\n${job.tours[0].comp}\n${job.tours[0].street}\n${job.tours[0].city}"; var bottomText =
"${job.id}\n${job.tours[0].comp}\n${job.tours[0].street}\n${job.tours[0].city}";
if (job.rem.trim().isNotEmpty) { if (job.rem.trim().isNotEmpty) {
bottomText += "\n\n${job.rem.trim()}"; bottomText += "\n\n${job.rem.trim()}";
} }
jobWidgets.add( jobWidgets.add(
ListTile( ListTile(
onTap: () { onTap: () {
_clicked(job); _clicked(job);
}, },
title: Container( title: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
border: Border.all(color: Colors.grey, width: 0.5), border: Border.all(color: Colors.grey, width: 0.5),
borderRadius: const BorderRadius.all(Radius.circular(13)) borderRadius: const BorderRadius.all(Radius.circular(13))),
), padding: const EdgeInsets.all(15.0),
padding: const EdgeInsets.all(15.0), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
children: <Widget>[ Text(
Text( DateFormat('dd.MM.yyyy HH:mm')
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(), .format(DateTime.parse(job.ordertime).toLocal())
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.transparent), .toString(),
textAlign: TextAlign.left, style: TextStyle(
), backgroundColor: isJobTooFarInFuture(job)
Text( ? Colors.red
job.crFilter != null ? job.crFilter.toString() : "", : Colors.transparent),
textAlign: TextAlign.left, textAlign: TextAlign.left,
), ),
Row( Text(
children: [ job.crFilter != null ? job.crFilter.toString() : "",
Image.asset("assets/${mapVehicleTypeToImageName(job.vhtId)}", width: 60, height: 60), textAlign: TextAlign.left,
const SizedBox(width: 10), ),
Text( Row(
mapVehicleTypeToText(job.vhtId) children: [
), Image.asset(
], "assets/${mapVehicleTypeToImageName(job.vhtId)}",
), width: 60,
Text( height: 60),
bottomText, const SizedBox(width: 10),
textAlign: TextAlign.left, Text(mapVehicleTypeToText(job.vhtId)),
), ],
], ),
), Text(
) bottomText,
), textAlign: TextAlign.left,
),
],
),
)),
); );
} }
@@ -126,13 +133,10 @@ class _AcceptedJobsPageState extends State<AcceptedJobsPage> with ProducerMixin
} }
void _clicked(Job job) async { void _clicked(Job job) async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPushContentView, routingKey: Constants.messageTopicPushContentView,
payload: TourListPage(job: job), payload: TourListPage(job: job),
); );
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job));
} }
} }
@@ -171,18 +175,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.arrow_back, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.arrow_back,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -200,18 +204,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
@@ -225,7 +229,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: Text( child: Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
"Angenommene Aufträge", "Angenommene Aufträge",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
), ),
), ),
), ),
+31 -27
View File
@@ -25,7 +25,8 @@ class FinishedJobsPage extends ContentViewWidget {
} }
} }
class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin { class _FinishedJobsPageState extends State<FinishedJobsPage>
with ProducerMixin {
late List<Job> _jobs; late List<Job> _jobs;
late bool _initCompleted = false; late bool _initCompleted = false;
@@ -33,7 +34,10 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
@override @override
void initState() { void initState() {
Future.delayed(const Duration(seconds: 0), () async { Future.delayed(const Duration(seconds: 0), () async {
_jobs = await MyApp.isarInstance.jobs.filter().stateEqualTo(Constants.stateFinished).findAll(); _jobs = await MyApp.isarInstance.jobs
.filter()
.stateEqualTo(Constants.stateFinished)
.findAll();
_initCompleted = true; _initCompleted = true;
@@ -55,9 +59,7 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Scrollbar( child: Scrollbar(
thumbVisibility: true, thumbVisibility: true,
child: ListView( child: ListView(children: jobWidgets),
children: jobWidgets
),
), ),
); );
} }
@@ -66,7 +68,8 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
List<Widget> jobWidgets = []; List<Widget> jobWidgets = [];
for (var job in _jobs) { for (var job in _jobs) {
var bottomText = "${job.id}\n${job.tours[0].comp}\n${job.tours[0].street}\n${job.tours[0].city}"; var bottomText =
"${job.id}\n${job.tours[0].comp}\n${job.tours[0].street}\n${job.tours[0].city}";
if (job.rem.trim().isNotEmpty) { if (job.rem.trim().isNotEmpty) {
bottomText += "\n\n${job.rem.trim()}"; bottomText += "\n\n${job.rem.trim()}";
} }
@@ -80,15 +83,16 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
border: Border.all(color: Colors.grey, width: 0.5), border: Border.all(color: Colors.grey, width: 0.5),
borderRadius: const BorderRadius.all(Radius.circular(13)) borderRadius: const BorderRadius.all(Radius.circular(13))),
),
padding: const EdgeInsets.all(15.0), padding: const EdgeInsets.all(15.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Text( Text(
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime).toLocal()).toString(), DateFormat('dd.MM.yyyy HH:mm')
.format(DateTime.parse(job.ordertime).toLocal())
.toString(),
textAlign: TextAlign.left, textAlign: TextAlign.left,
), ),
Text( Text(
@@ -97,11 +101,12 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
), ),
Row( Row(
children: [ children: [
Image.asset("assets/${mapVehicleTypeToImageName(job.vhtId)}", width: 60, height: 60), Image.asset(
"assets/${mapVehicleTypeToImageName(job.vhtId)}",
width: 60,
height: 60),
const SizedBox(width: 10), const SizedBox(width: 10),
Text( Text(mapVehicleTypeToText(job.vhtId)),
mapVehicleTypeToText(job.vhtId)
),
], ],
), ),
Text( Text(
@@ -110,8 +115,7 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
), ),
], ],
), ),
) )),
),
); );
} }
@@ -119,13 +123,10 @@ class _FinishedJobsPageState extends State<FinishedJobsPage> with ProducerMixin
} }
void _clicked(Job job) async { void _clicked(Job job) async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPushContentView, routingKey: Constants.messageTopicPushContentView,
payload: TourListPage(job: job, readOnly: true), payload: TourListPage(job: job, readOnly: true),
); );
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: TourListPage(job: job, readOnly: true,));
} }
} }
@@ -164,18 +165,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.arrow_back, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.arrow_back,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -193,18 +194,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPushContentView, routingKey: Constants.messageTopicPushContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
@@ -218,7 +219,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: Text( child: Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
"Erledigte Aufträge", "Erledigte Aufträge",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
), ),
), ),
), ),
+130 -105
View File
@@ -91,22 +91,21 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
badgeColor: Colors.red, badgeColor: Colors.red,
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
borderSide: const BorderSide(color: Colors.white, width: 0), borderSide:
const BorderSide(color: Colors.white, width: 0),
elevation: 0, elevation: 0,
), ),
child: getDefaultButton( child: getDefaultButton(
'Zugewiesene Aufträge', 'Zugewiesene Aufträge',
image: Image.asset('assets/zugewiesene_auftraege.png', width: 30, height: 30), image: Image.asset('assets/zugewiesene_auftraege.png',
width: 30, height: 30),
() async => { () async => {
// TODO MESSAGING sendMessage(
sendMessage( routingKey:
routingKey: Constants.messageTopicPushContentView, Constants.messageTopicPushContentView,
payload: const AssignedJobsPage(), payload: const AssignedJobsPage(),
) )
}),
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AssignedJobsPage())
}
),
); );
}, },
), ),
@@ -119,7 +118,8 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
builder: (context, value, child) { builder: (context, value, child) {
return badges.Badge( return badges.Badge(
showBadge: value > 0, showBadge: value > 0,
position: badges.BadgePosition.topEnd(top: -12, end: -5), position:
badges.BadgePosition.topEnd(top: -12, end: -5),
badgeContent: Text( badgeContent: Text(
value.toString(), value.toString(),
style: const TextStyle( style: const TextStyle(
@@ -131,23 +131,23 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
badgeColor: Colors.red, badgeColor: Colors.red,
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
borderSide: const BorderSide(color: Colors.white, width: 0), borderSide:
const BorderSide(color: Colors.white, width: 0),
elevation: 0, elevation: 0,
), ),
child: getDefaultButton( child: getDefaultButton(
'Angenommene Aufträge', 'Angenommene Aufträge',
image: Image.asset('assets/angenommene_auftraege.png', width: 30, height: 30), image: Image.asset(
'assets/angenommene_auftraege.png',
width: 30,
height: 30),
() async => { () async => {
// TODO MESSAGING sendMessage(
sendMessage( routingKey:
routingKey: Constants.messageTopicPushContentView, Constants.messageTopicPushContentView,
payload: const AcceptedJobsPage(), payload: const AcceptedJobsPage(),
) )
}));
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const AcceptedJobsPage())
}
)
);
}, },
), ),
), ),
@@ -156,17 +156,14 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
visible: !_loggedOut, visible: !_loggedOut,
child: getDefaultButton( child: getDefaultButton(
'Erledigte Aufträge', 'Erledigte Aufträge',
image: Image.asset('assets/erledigte_auftraege.png', width: 30, height: 30), image: Image.asset('assets/erledigte_auftraege.png',
width: 30, height: 30),
() async => { () async => {
// TODO MESSAGING sendMessage(
sendMessage( routingKey: Constants.messageTopicPushContentView,
routingKey: Constants.messageTopicPushContentView, payload: const FinishedJobsPage(),
payload: const FinishedJobsPage(), )
) }),
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const FinishedJobsPage())
}
),
), ),
SizedBox(height: _loggedOut == true ? 0 : 20), SizedBox(height: _loggedOut == true ? 0 : 20),
Visibility( Visibility(
@@ -176,7 +173,8 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
builder: (context, value, child) { builder: (context, value, child) {
return badges.Badge( return badges.Badge(
showBadge: value > 0, showBadge: value > 0,
position: badges.BadgePosition.topEnd(top: -12, end: -5), position:
badges.BadgePosition.topEnd(top: -12, end: -5),
badgeContent: Text( badgeContent: Text(
value.toString(), value.toString(),
style: const TextStyle( style: const TextStyle(
@@ -188,23 +186,21 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
badgeColor: Colors.red, badgeColor: Colors.red,
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
borderSide: const BorderSide(color: Colors.white, width: 0), borderSide:
const BorderSide(color: Colors.white, width: 0),
elevation: 0, elevation: 0,
), ),
child: getDefaultButton( child: getDefaultButton(
'Nachrichten', 'Nachrichten',
image: Image.asset('assets/nachrichten.png', width: 30, height: 30), image: Image.asset('assets/nachrichten.png',
width: 30, height: 30),
() async => { () async => {
// TODO MESSAGING sendMessage(
sendMessage( routingKey:
routingKey: Constants.messageTopicPushContentView, Constants.messageTopicPushContentView,
payload: const MessagesPage(), payload: const MessagesPage(),
) )
}));
//await MessageService().publish<ContentViewWidget>(Constants.messageTopicPushContentView, arguments: const MessagesPage())
}
)
);
}, },
), ),
), ),
@@ -213,30 +209,37 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
visible: !_loggedOut, visible: !_loggedOut,
child: getDefaultButton( child: getDefaultButton(
'Anfahrtsbereich', 'Anfahrtsbereich',
image: Image.asset('assets/anfahrtsbereich.png', width: 30, height: 30), image: Image.asset('assets/anfahrtsbereich.png',
() async => { width: 30, height: 30),
sendMessage( () async => {
routingKey: Constants.messageTopicPushContentView, sendMessage(
payload: const ApproachAreaPage(), routingKey: Constants.messageTopicPushContentView,
) payload: const ApproachAreaPage(),
}), )
}),
), ),
SizedBox(height: _loggedOut == true ? 0 : 20), SizedBox(height: _loggedOut == true ? 0 : 20),
Visibility( Visibility(
visible: !_loggedOut && _showBWVButton, visible: !_loggedOut && _showBWVButton,
child: getDefaultButton( child: getDefaultButton(
'Wunschziel für heute', 'Wunschziel für heute',
image: Image.asset('assets/wunsch_plz.png', width: 30, height: 30), image: Image.asset('assets/wunsch_plz.png',
() async => { width: 30, height: 30),
sendMessage( () async => {
routingKey: Constants.messageTopicPushContentView, sendMessage(
payload: const SetDesiredZipPage(), routingKey: Constants.messageTopicPushContentView,
) payload: const SetDesiredZipPage(),
}), )
}),
), ),
SizedBox(height: _loggedOut == true ? 0 : 20), SizedBox(height: _loggedOut == true ? 0 : 20),
getDefaultButton(_loggedOut ? 'Anmelden' : 'Abmelden', getDefaultButton(_loggedOut ? 'Anmelden' : 'Abmelden',
image: Image.asset(_loggedOut ? 'assets/anmelden.png' : 'assets/abmelden.png', width: 30, height: 30), () async { image: Image.asset(
_loggedOut
? 'assets/anmelden.png'
: 'assets/abmelden.png',
width: 30,
height: 30), () async {
_logout(context); _logout(context);
}), }),
Expanded( Expanded(
@@ -299,19 +302,24 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
); );
subscribe( subscribe(
queueId: Constants.messageTopicBWVEnabled, queueId: Constants.messageTopicBWVEnabled,
callback: (message) { callback: (message) {
setState(() { setState(() {
_showBWVButton = Util.preferencesGetBool(Constants.prefsBWVEnabled, false); _showBWVButton =
Util.preferencesGetBool(Constants.prefsBWVEnabled, false);
});
}); });
}
);
} }
void _refreshBadges() async { void _refreshBadges() async {
_assignedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(0).count(); _assignedJobsValueNotifier.value =
_acceptedJobsValueNotifier.value = await MyApp.isarInstance.jobs.filter().stateEqualTo(1).count(); await MyApp.isarInstance.jobs.filter().stateEqualTo(0).count();
_messagesValueNotifier.value = await MyApp.isarInstance.chatMessages.filter().readEqualTo(false).count(); _acceptedJobsValueNotifier.value =
await MyApp.isarInstance.jobs.filter().stateEqualTo(1).count();
_messagesValueNotifier.value = await MyApp.isarInstance.chatMessages
.filter()
.readEqualTo(false)
.count();
} }
void _jobReceived(Job job) { void _jobReceived(Job job) {
@@ -329,7 +337,7 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
_loggedOut = false; _loggedOut = false;
setState(() { }); setState(() {});
} }
} }
@@ -339,7 +347,8 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
onPressed: () async { onPressed: () async {
Navigator.of(context).pop(); Navigator.of(context).pop();
showMessageDialog(context, "Information", "Sie werden abgemeldet.\nBitte warten..."); showMessageDialog(
context, "Information", "Sie werden abgemeldet.\nBitte warten...");
_sendLogoutMessage(); _sendLogoutMessage();
@@ -352,14 +361,11 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
); );
Future.delayed(const Duration(seconds: 3), () async { Future.delayed(const Duration(seconds: 3), () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicDisconnectClient, routingKey: Constants.messageTopicDisconnectClient,
payload: DisconnectClientMessage(), payload: DisconnectClientMessage(),
); );
//await MessageService().publish<DisconnectClientMessage>(Constants.messageTopicDisconnectClient, arguments: DisconnectClientMessage());
Navigator.of(MyApp.appNavigatorKey.currentContext!).pop(); Navigator.of(MyApp.appNavigatorKey.currentContext!).pop();
setState(() {}); setState(() {});
@@ -406,13 +412,13 @@ class _MainPageState extends State<MainPage> with ConsumerMixin, ProducerMixin {
logoutMessage.pos!.acc = position.accuracy.toInt(); logoutMessage.pos!.acc = position.accuracy.toInt();
} }
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPublishPayload, routingKey: Constants.messageTopicPublishPayload,
payload: PublishPayloadMessage(topic: "logout", message: logoutMessage.toJson(), acknowledgeRequired: false), payload: PublishPayloadMessage(
topic: "logout",
message: logoutMessage.toJson(),
acknowledgeRequired: false),
); );
//await MessageService().publish<PublishPayloadMessage>(Constants.messageTopicPublishPayload, arguments: PublishPayloadMessage(topic: "logout", message: logoutMessage.toJson(), qos: MqttQos.exactlyOnce));
} }
} }
@@ -458,12 +464,14 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
), ),
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {},
},
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -481,18 +489,24 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
var sessionStatus = await MyApp.isarInstance.sessionStatus.where().findFirst(); var sessionStatus = await MyApp
.isarInstance.sessionStatus
.where()
.findFirst();
showInfosPopup(sessionStatus); showInfosPopup(sessionStatus);
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
), padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
),
], ],
), ),
SizedBox( SizedBox(
@@ -501,7 +515,8 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
child: Column( child: Column(
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Verteilt die Texte gleichmäßig in der Zeile mainAxisAlignment: MainAxisAlignment
.spaceBetween, // Verteilt die Texte gleichmäßig in der Zeile
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: cellWidth, width: cellWidth,
@@ -522,21 +537,24 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
], ],
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Verteilt die Texte gleichmäßig in der Zeile mainAxisAlignment: MainAxisAlignment
.spaceBetween, // Verteilt die Texte gleichmäßig in der Zeile
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
width: cellWidth, width: cellWidth,
child: ValueListenableBuilder<String>( child: ValueListenableBuilder<String>(
valueListenable: _zipValueNotifier, valueListenable: _zipValueNotifier,
builder: (context, value, child) { builder: (context, value, child) {
return Text( return Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
value, value,
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: const TextStyle(
); fontWeight: FontWeight.bold,
}, fontSize: 18,
) color: Colors.white),
), );
},
)),
SizedBox( SizedBox(
width: cellWidth, width: cellWidth,
child: ValueListenableBuilder<String>( child: ValueListenableBuilder<String>(
@@ -545,7 +563,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
return Text( return Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
value, value,
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
); );
}, },
), ),
@@ -565,7 +586,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
return Text( return Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
value, value,
style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
); );
}, },
), ),
@@ -597,7 +621,8 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ConsumerMixin {
_updateHeader() async { _updateHeader() async {
var status = await MyApp.isarInstance.locationStatus.where().findFirst(); var status = await MyApp.isarInstance.locationStatus.where().findFirst();
var sessionStatus = await MyApp.isarInstance.sessionStatus.where().findFirst(); var sessionStatus =
await MyApp.isarInstance.sessionStatus.where().findFirst();
if (status != null) { if (status != null) {
_zipValueNotifier.value = status.zip; _zipValueNotifier.value = status.zip;
+57 -43
View File
@@ -1,4 +1,3 @@
import 'package:dart_mq/dart_mq.dart'; import 'package:dart_mq/dart_mq.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_chat_ui/flutter_chat_ui.dart'; import 'package:flutter_chat_ui/flutter_chat_ui.dart';
@@ -73,14 +72,13 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
children: [ children: [
Chat( Chat(
messages: _messages, messages: _messages,
textMessageOptions:const TextMessageOptions(isTextSelectable:false), textMessageOptions: const TextMessageOptions(isTextSelectable: false),
onSendPressed: _handleSendPressed, onSendPressed: _handleSendPressed,
showUserAvatars: false, showUserAvatars: false,
showUserNames: false, showUserNames: false,
user: _user, user: _user,
onMessageTap: (context, message) => { onMessageTap: (context, message) =>
_showDeleteMessageDialog(context, message) {_showDeleteMessageDialog(context, message)},
},
), ),
], ],
); );
@@ -103,15 +101,20 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
sendMessage( sendMessage(
routingKey: Constants.messageTopicPublishPayload, routingKey: Constants.messageTopicPublishPayload,
payload: PublishPayloadMessage(topic: "message", message: message.toJson(), acknowledgeRequired: true), payload: PublishPayloadMessage(
topic: "message",
message: message.toJson(),
acknowledgeRequired: true),
); );
_messages.insert(0, types.TextMessage( _messages.insert(
author: _user, 0,
createdAt: now.millisecondsSinceEpoch, types.TextMessage(
id: message.id.toString(), author: _user,
text: text.text, createdAt: now.millisecondsSinceEpoch,
)); id: message.id.toString(),
text: text.text,
));
setState(() {}); setState(() {});
} }
@@ -123,7 +126,8 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
for (var message in messages) { for (var message in messages) {
_messages.add(types.TextMessage( _messages.add(types.TextMessage(
author: message.from == _sid ? _user : _central, author: message.from == _sid ? _user : _central,
createdAt: DateTime.parse(message.time).toLocal().millisecondsSinceEpoch, createdAt:
DateTime.parse(message.time).toLocal().millisecondsSinceEpoch,
id: message.id.toString(), id: message.id.toString(),
text: "${message.subj}\n${message.text}", text: "${message.subj}\n${message.text}",
)); ));
@@ -147,14 +151,12 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
contentPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero,
shadowColor: Colors.transparent, shadowColor: Colors.transparent,
backgroundColor: Colors.white, backgroundColor: Colors.white,
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) { content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return SizedBox( return SizedBox(
key: GlobalKey(), key: GlobalKey(),
height: 120, height: 120,
width: MediaQuery width: MediaQuery.of(context).size.width * 1.2,
.of(context)
.size
.width * 1.2,
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
@@ -166,28 +168,34 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
const SizedBox(height: 20), const SizedBox(height: 20),
Row(children: [ Row(children: [
Expanded( Expanded(
child: getDefaultButton('Nein', () => {Navigator.of(context).pop()}), child: getDefaultButton('Nein',
() => {Navigator.of(context).pop()}),
), ),
const SizedBox(width: 20), const SizedBox(width: 20),
Expanded( Expanded(
child: getDefaultButton('Ja', () async => { child: getDefaultButton(
await MyApp.isarInstance.writeTxn(() async => { await MyApp.isarInstance.chatMessages.delete(int.parse(message.id))}), 'Ja',
() async => {
_fetchMessages(), await MyApp.isarInstance.writeTxn(
() async => {
setState(() {}), await MyApp.isarInstance
.chatMessages
Navigator.of(MyApp.appNavigatorKey.currentContext!).pop() .delete(int.parse(
}), message.id))
}),
_fetchMessages(),
setState(() {}),
Navigator.of(MyApp.appNavigatorKey
.currentContext!)
.pop()
}),
) )
]) ])
], ],
), ),
), ),
) ));
); }));
})
);
}); });
} }
@@ -199,7 +207,7 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
if (unreadChatMessages.isNotEmpty) { if (unreadChatMessages.isNotEmpty) {
List<String> chatMessageIds = []; List<String> chatMessageIds = [];
for(var message in unreadChatMessages) { for (var message in unreadChatMessages) {
chatMessageIds.add(message.id.toString()); chatMessageIds.add(message.id.toString());
} }
@@ -209,7 +217,10 @@ class _MessagesPageState extends State<MessagesPage> with ProducerMixin {
sendMessage( sendMessage(
routingKey: Constants.messageTopicPublishPayload, routingKey: Constants.messageTopicPublishPayload,
payload: PublishPayloadMessage(topic: "mssg_received", message: chatMessagesShowed.toJson(), acknowledgeRequired: false), payload: PublishPayloadMessage(
topic: "mssg_received",
message: chatMessagesShowed.toJson(),
acknowledgeRequired: false),
); );
} }
} }
@@ -250,18 +261,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.arrow_back, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.arrow_back,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -279,18 +290,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
@@ -304,7 +315,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: Text( child: Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
"Nachrichten", "Nachrichten",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
), ),
), ),
), ),
+63 -54
View File
@@ -23,12 +23,14 @@ class SetDesiredZipPage extends ContentViewWidget {
} }
} }
class _SetDesiredZipPageState extends State<SetDesiredZipPage> with ProducerMixin { class _SetDesiredZipPageState extends State<SetDesiredZipPage>
with ProducerMixin {
TextEditingController textEditController = TextEditingController(); TextEditingController textEditController = TextEditingController();
@override @override
void initState() { void initState() {
var savedDesiredZip = Util.preferencesGetString(Constants.prefsDesiredZip, null); var savedDesiredZip =
Util.preferencesGetString(Constants.prefsDesiredZip, null);
if (savedDesiredZip != null) { if (savedDesiredZip != null) {
textEditController.text = savedDesiredZip; textEditController.text = savedDesiredZip;
} }
@@ -40,50 +42,51 @@ class _SetDesiredZipPageState extends State<SetDesiredZipPage> with ProducerMixi
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Column( child: Column(children: [
children: const Text("Bitte geben Sie Ihr Wunschziel für heute ein"),
[ const SizedBox(height: 20),
const Text("Bitte geben Sie Ihr Wunschziel für heute ein"), Row(
const SizedBox(height: 20), mainAxisAlignment:
Row( MainAxisAlignment.center, // Zentriert das Textfeld horizontal
mainAxisAlignment: MainAxisAlignment.center, // Zentriert das Textfeld horizontal children: [
children: [ SizedBox(
SizedBox( width: 120, // Festlegen der Breite des Textfelds
width: 120, // Festlegen der Breite des Textfelds child: Util.getDefaultTextField('PLZ',
child: textInputType: TextInputType.number,
Util.getDefaultTextField('PLZ', formatter: [
textInputType: TextInputType.number, // Erlaubt nur Ziffern
formatter: [ FilteringTextInputFormatter.digitsOnly,
// Erlaubt nur Ziffern // Begrenzt die maximale Eingabelänge auf 5 Zeichen
FilteringTextInputFormatter.digitsOnly, LengthLimitingTextInputFormatter(5),
// Begrenzt die maximale Eingabelänge auf 5 Zeichen
LengthLimitingTextInputFormatter(5),
],
controller: textEditController,
maxLength: 5,
autofocus: true
),
),
], ],
), controller: textEditController,
const SizedBox(height: 20), maxLength: 5,
getDefaultButton('Übernehmen', () => autofocus: true),
{ ),
if (textEditController.text.isEmpty || textEditController.text.length == 5) { ],
Util.preferencesSaveString(Constants.prefsDesiredZip, textEditController.text), ),
const SizedBox(height: 20),
_sendDesiredZipMessage(textEditController.text), getDefaultButton(
'Übernehmen',
sendMessage( () => {
routingKey: Constants.messageTopicPopContentView, if (textEditController.text.isEmpty ||
payload: PopContentViewMessage(count: 1), textEditController.text.length == 5)
) {
} else { Util.preferencesSaveString(
showAlertDialog("Fehler", "Das Feld muss leer sein, oder es müssen fünf Zahlen eingegeben werden") Constants.prefsDesiredZip, textEditController.text),
} _sendDesiredZipMessage(textEditController.text),
sendMessage(
routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1),
)
}
else
{
showAlertDialog("Fehler",
"Das Feld muss leer sein, oder es müssen fünf Zahlen eingegeben werden")
}
}) })
] ]),
),
); );
} }
@@ -93,7 +96,10 @@ class _SetDesiredZipPageState extends State<SetDesiredZipPage> with ProducerMixi
sendMessage( sendMessage(
routingKey: Constants.messageTopicPublishPayload, routingKey: Constants.messageTopicPublishPayload,
payload: PublishPayloadMessage(topic: "set_desired_zip", message: desiredZipMessage.toJson(), acknowledgeRequired: true), payload: PublishPayloadMessage(
topic: "set_desired_zip",
message: desiredZipMessage.toJson(),
acknowledgeRequired: true),
); );
} }
} }
@@ -133,18 +139,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.arrow_back, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.arrow_back,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -162,18 +168,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
@@ -187,7 +193,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: Text( child: Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
"Wunschziel für heute", "Wunschziel für heute",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
), ),
), ),
), ),
+86 -70
View File
@@ -11,7 +11,11 @@ import '../tools/constants.dart';
import '../tools/util.dart'; import '../tools/util.dart';
class TourDetailsPage extends ContentViewWidget { class TourDetailsPage extends ContentViewWidget {
const TourDetailsPage({super.key, required this.job, required this.tour, this.readOnly = false}); const TourDetailsPage(
{super.key,
required this.job,
required this.tour,
this.readOnly = false});
final Job job; final Job job;
@@ -63,56 +67,60 @@ class _TourDetailsPageState extends State<TourDetailsPage> with ProducerMixin {
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 0.5), border: Border.all(color: Colors.grey, width: 0.5),
color: Colors.transparent, color: Colors.transparent,
borderRadius: const BorderRadius.all(Radius.circular(13)) borderRadius: const BorderRadius.all(Radius.circular(13))),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
"${"Station ${widget.tour.sort}"} ${mapTourMode(widget.tour.mode)}",
textAlign: TextAlign.left,
), ),
child: Column( Text(
crossAxisAlignment: CrossAxisAlignment.stretch, widget.tour.comp,
children: [ textAlign: TextAlign.left,
Text(
"${"Station ${widget.tour.sort}"} ${mapTourMode(widget.tour.mode)}",
textAlign: TextAlign.left,
),
Text(
widget.tour.comp,
textAlign: TextAlign.left,
),
Text(
widget.tour.person,
textAlign: TextAlign.left,
),
Text(
widget.tour.street,
textAlign: TextAlign.left,
),
Text(
widget.tour.city,
textAlign: TextAlign.left,
),
Text(
"Tel.: ${widget.tour.phone}",
textAlign: TextAlign.left,
),
Text(
"Komm-#: ${widget.tour.com}",
textAlign: TextAlign.left,
),
const SizedBox(height: 10),
getDefaultButton('Karte', () =>
{
if (widget.tour.pos != null) {
showMapPopup(context, widget.tour, widget.job.tours)
} else {
showAlertDialog('Information', 'Es liegt keine Position für diese Station vor')
}
}),
],
), ),
) Text(
), widget.tour.person,
textAlign: TextAlign.left,
),
Text(
widget.tour.street,
textAlign: TextAlign.left,
),
Text(
widget.tour.city,
textAlign: TextAlign.left,
),
Text(
"Tel.: ${widget.tour.phone}",
textAlign: TextAlign.left,
),
Text(
"Komm-#: ${widget.tour.com}",
textAlign: TextAlign.left,
),
const SizedBox(height: 10),
getDefaultButton(
'Karte',
() => {
if (widget.tour.pos != null)
{
showMapPopup(
context, widget.tour, widget.job.tours)
}
else
{
showAlertDialog('Information',
'Es liegt keine Position für diese Station vor')
}
}),
],
),
)),
const SizedBox(height: 10), const SizedBox(height: 10),
Expanded( Expanded(
child: Container( child: Container(
@@ -120,24 +128,29 @@ class _TourDetailsPageState extends State<TourDetailsPage> with ProducerMixin {
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 1.5), border: Border.all(color: Colors.grey, width: 1.5),
color: Colors.transparent, color: Colors.transparent,
borderRadius: const BorderRadius.all(Radius.circular(13)) borderRadius: const BorderRadius.all(Radius.circular(13))),
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
Expanded(child: Scrollbar(thumbVisibility: true, child: SingleChildScrollView(child: Text(remark)))), Expanded(
] child: Scrollbar(
), thumbVisibility: true,
child: SingleChildScrollView(child: Text(remark)))),
]),
), ),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
getDefaultButton('Weiter', () async => getDefaultButton(
{ 'Weiter',
sendMessage( () async => {
routingKey: Constants.messageTopicPushContentView, sendMessage(
payload: TaskListPage(job: widget.job, tour: widget.tour, readOnly: widget.readOnly), routingKey: Constants.messageTopicPushContentView,
) payload: TaskListPage(
}), job: widget.job,
tour: widget.tour,
readOnly: widget.readOnly),
)
}),
], ],
), ),
); );
@@ -179,18 +192,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
radius: 10, radius: 10,
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.arrow_back, size: 20.0, color: Colors.white)), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.arrow_back,
size: 20.0, color: Colors.white)),
), ),
), ),
), ),
@@ -208,18 +221,18 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: FittedBox( child: FittedBox(
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
// TODO MESSAGING
sendMessage( sendMessage(
routingKey: Constants.messageTopicPopContentView, routingKey: Constants.messageTopicPopContentView,
payload: PopContentViewMessage(count: 1), payload: PopContentViewMessage(count: 1),
); );
//await MessageService().publish<PopContentViewMessage>(Constants.messageTopicPopContentView, arguments: PopContentViewMessage(count: 1));
}, },
child: const CircleAvatar( child: const CircleAvatar(
backgroundColor: Constants.colorPrimary, backgroundColor: Constants.colorPrimary,
radius: 10, radius: 10,
child: Padding(padding: EdgeInsets.all(1.0), child: Icon(Icons.info_outline, size: 20.0, color: Colors.white))), child: Padding(
padding: EdgeInsets.all(1.0),
child: Icon(Icons.info_outline,
size: 20.0, color: Colors.white))),
), ),
), ),
), ),
@@ -233,7 +246,10 @@ class _HeaderWidgetState extends State<_HeaderWidget> with ProducerMixin {
child: Text( child: Text(
textAlign: TextAlign.center, textAlign: TextAlign.center,
"Details der Station", "Details der Station",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18, color: Colors.white), style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 18,
color: Colors.white),
), ),
), ),
), ),