Pflichtfeld-Kennzeichen (required) aus dem Workflow-Editor auswerten

- TourField/TourEntry um optionales required-Flag erweitert (Altdaten ohne
  Angabe verhalten sich unverändert)
- Weiter-Button frei, wenn alle Pflichtfelder erfüllt sind oder der Task
  optional ist; Listen ohne Pflichtfelder (inkl. leerer Listen) sind frei
- Pflichtfelder und Pflicht-Checkboxen mit rotem * markiert; Titel-* nur
  noch, wenn der Task tatsächlich zwingende Eingaben verlangt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
SvenandClaude Fable 5 committed 2026-07-06 08:03:51 +02:00
1 parent d864b9c72a
commit f58f3f0c59
2 files changed
+92 -6

No files matched your search

+12
View File
@@ -82,6 +82,10 @@ class TourEntry {
late String text;
late bool queryRemark;
/// Pflicht-Kennzeichen aus dem Workflow-Editor (Checkbox-Liste, Typ 14).
/// `null`, wenn das JSON keine Angabe enthält (Altdaten).
bool? required;
TourEntry();
factory TourEntry.fromJson(Map<String, dynamic> json) {
@@ -89,6 +93,7 @@ class TourEntry {
entry.code = json['code'] as int;
entry.text = json['text'] as String;
entry.queryRemark = json['query_remark'] as bool? ?? false;
entry.required = json['required'] as bool?;
return entry;
}
@@ -97,6 +102,7 @@ class TourEntry {
'code': code,
'text': text,
'query_remark': queryRemark,
if (required != null) 'required': required,
};
}
}
@@ -144,12 +150,17 @@ class TourField {
String? title;
String? placeholder;
/// Pflicht-Kennzeichen aus dem Workflow-Editor. `null`, wenn das JSON
/// keine Angabe enthält (Altdaten).
bool? required;
TourField();
factory TourField.fromJson(Map<String, dynamic> json) {
final field = TourField();
field.title = json['title'] as String?;
field.placeholder = json['placeholder'] as String?;
field.required = json['required'] as bool?;
return field;
}
@@ -157,6 +168,7 @@ class TourField {
return {
'title': title,
'placeholder': placeholder,
if (required != null) 'required': required,
};
}
}