Erweiterungen
This commit is contained in:
1 parent
ba1f7d5440
commit
bb3dc9e856
28 files changed
+1672
-1291
No files matched your search
@@ -17,6 +17,7 @@ import 'package:stadtbote/tools/messages/remove_state_0_job_from_map.dart';
|
||||
|
||||
import '../main.dart';
|
||||
import '../model/job.dart';
|
||||
import '../popups/files_popup.dart';
|
||||
import '../tools/constants.dart';
|
||||
import '../tools/util.dart';
|
||||
|
||||
@@ -38,6 +39,7 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
late bool _initCompleted = false;
|
||||
|
||||
List<Job> _jobs = [];
|
||||
final List<ExpandableController> _expandableControllers = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -59,6 +61,11 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
// Unsubscribe from all message topics
|
||||
unsubscribe(queueId: Constants.messageTopicJobReceived);
|
||||
|
||||
// Dispose all expandable controllers
|
||||
for (var controller in _expandableControllers) {
|
||||
controller.dispose();
|
||||
}
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -92,9 +99,16 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
List<Widget> _createWidgets() {
|
||||
List<Widget> widgets = [];
|
||||
|
||||
// Clear previous controllers before creating new ones
|
||||
for (var controller in _expandableControllers) {
|
||||
controller.dispose();
|
||||
}
|
||||
_expandableControllers.clear();
|
||||
|
||||
for (var job in _jobs) {
|
||||
var expandableController = ExpandableController();
|
||||
expandableController.expanded = true;
|
||||
_expandableControllers.add(expandableController);
|
||||
|
||||
widgets.add(ExpandableNotifier(
|
||||
child: ListTile(
|
||||
@@ -126,27 +140,29 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: Column(
|
||||
child: Stack(
|
||||
children: [
|
||||
Text(
|
||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal()).toString(),
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.white),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
Column(
|
||||
children: [
|
||||
Image.asset("assets/${mapVehicleTypeToImageName(job.vhtId)}", width: 60, height: 60),
|
||||
const SizedBox(width: 10),
|
||||
Text(
|
||||
mapVehicleTypeToText(job.vhtId)
|
||||
DateFormat('dd.MM.yyyy HH:mm').format(DateTime.fromMillisecondsSinceEpoch(job.ordertime * 1000, isUtc: true).toLocal()).toString(),
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(backgroundColor: isJobTooFarInFuture(job) ? Colors.red : Colors.white),
|
||||
),
|
||||
],
|
||||
),
|
||||
Text('Auftragsnummer: ${job.externalId}'),
|
||||
Text(job.tours[0].comp),
|
||||
Text(job.tours[0].street),
|
||||
Text(job.tours[0].city),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Image.asset("assets/${mapVehicleTypeToImageName(job.vhtId)}", width: 60, height: 60),
|
||||
const SizedBox(width: 10),
|
||||
Text(
|
||||
mapVehicleTypeToText(job.vhtId)
|
||||
),
|
||||
],
|
||||
),
|
||||
Text('Auftragsnummer: ${job.externalId}'),
|
||||
Text(job.tours[0].comp),
|
||||
Text(job.tours[0].street),
|
||||
Text(job.tours[0].city),
|
||||
const SizedBox(height: 20),
|
||||
ScrollOnExpand(
|
||||
scrollOnExpand: true,
|
||||
@@ -217,11 +233,19 @@ class _AssignedJobsPageState extends State<AssignedJobsPage> with ProducerMixin,
|
||||
])
|
||||
],
|
||||
),
|
||||
),
|
||||
if (job.hasFiles)
|
||||
Positioned(
|
||||
top: 0,
|
||||
right: 0,
|
||||
child: FilesBadge(files: job.files),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
));
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
return widgets;
|
||||
|
||||
Reference in new issue
Block a user