import 'package:flutter/material.dart'; import 'package:flutter_broadcast_receiver/flutter_broadcast_receiver.dart'; import 'package:isar/isar.dart'; import 'package:stadtbote/content_views/tour_list_page.dart'; import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:intl/intl.dart'; import '../main.dart'; import '../model/job.dart'; import '../tools/constants.dart'; import '../tools/util.dart'; class FinishedJobsPage extends ContentViewWidget { const FinishedJobsPage({super.key}); @override State createState() => _FinishedJobsPageState(); @override Future getHeaderInfo(BuildContext context) async { return HeaderInfo( titleWidget: const Text( 'Erledigte Aufträge', style: TextStyle( color: Colors.white, fontSize: 24.0, ), ), rightButtonEnabled: false, rightButtonVisible: false, rightButtonImage: null, rightButtonOnPressed: () async { //BroadcastReceiver().publish(Constants.messageTopicPushContentView, arguments: EmployeeEditProfileWidget()); }); } } class _FinishedJobsPageState extends State { late List _jobs; late bool _initCompleted = false; @override void initState() { Future.delayed(const Duration(seconds: 0), () async { _jobs = await MyApp.isarInstance.jobs.filter().stateEqualTo(2).findAll(); _initCompleted = true; setState(() {}); }); super.initState(); } @override Widget build(BuildContext context) { if (!_initCompleted) { return Util.getWaitWidget(context); } late List jobWidgets = _createjobWidgets(); return ListView( children: jobWidgets ); } List _createjobWidgets() { List jobWidgets = []; for (var job in _jobs) { jobWidgets.add( ListTile( onTap: () { _clicked(job); }, title: Container( decoration: BoxDecoration( color: Colors.white, border: Border.all(color: Colors.grey, width: 0.5), borderRadius: const BorderRadius.all(Radius.circular(13)) ), padding: const EdgeInsets.all(15.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( DateFormat('dd.MM.yyyy HH:mm').format(DateTime.parse(job.ordertime)).toString(), textAlign: TextAlign.left, ), Text( job.crFilter != null ? job.crFilter.toString() : "", textAlign: TextAlign.left, ), Row( children: [ Image.asset("assets/${mapVehicleTypeToImageName(job.vhtId)}", width: 60, height: 60), const SizedBox(width: 10), Text( mapVehicleTypeToText(job.vhtId) ), ], ), Text( job.id.toString(), textAlign: TextAlign.left, ), Text( job.tours[0].comp, textAlign: TextAlign.left, ), Text( job.tours[0].street, textAlign: TextAlign.left, ), Text( job.tours[0].city, textAlign: TextAlign.left, ), ], ), ) ), ); } return jobWidgets; } void _clicked(Job job) { BroadcastReceiver().publish(Constants.messageTopicPushContentView, arguments: TourListPage(job: job, readOnly: true,)); } }