Erweiterungen
This commit is contained in:
1 parent
c604dc9d55
commit
31fe4c5a06
20 files changed
+1449
-299
No files matched your search
@@ -1,9 +1,10 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.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/content_view_widget.dart';
|
||||||
import 'package:stadtbote/content_views/utils/header_info.dart';
|
import 'package:stadtbote/content_views/utils/header_info.dart';
|
||||||
import 'package:stadtbote/messages/PopContentViewMessage.dart';
|
import 'package:stadtbote/messages/PopContentViewMessage.dart';
|
||||||
@@ -64,8 +65,6 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
|
|
||||||
late List<TaskInfo> _taskList;
|
late List<TaskInfo> _taskList;
|
||||||
|
|
||||||
late KumiPopupWindow _popup;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
Future.delayed(const Duration(seconds: 0), () async {
|
Future.delayed(const Duration(seconds: 0), () async {
|
||||||
@@ -244,9 +243,12 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_processTaskArrivedOrFinished(TaskInfo taskInfo) {
|
_processTaskArrivedOrFinished(TaskInfo taskInfo) {
|
||||||
_popup = showTaskArrivedPopup(context, taskInfo, () {
|
showTaskArrivedPopup(context, taskInfo, () {
|
||||||
DateFormat dateFormat = DateFormat("dd.MM.yyyy HH:mm");
|
DateFormat dateFormat = DateFormat("dd.MM.yyyy HH:mm");
|
||||||
|
|
||||||
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
|
||||||
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
taskInfo.additionalText = dateFormat.format(DateTime.now());
|
taskInfo.additionalText = dateFormat.format(DateTime.now());
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
@@ -255,34 +257,38 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
setState(() {});
|
setState(() {});
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
|
|
||||||
_popup.dismiss(context);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_processCommissionNumber(TaskInfo taskInfo) {
|
_processCommissionNumber(TaskInfo taskInfo) {
|
||||||
_popup = showComissionNumberPopup(context, taskInfo, (comissionNumber) {
|
showComissionNumberPopup(context, taskInfo, (comissionNumber) {
|
||||||
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.val = comissionNumber;
|
||||||
|
|
||||||
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
taskInfo.additionalText = comissionNumber;
|
taskInfo.additionalText = comissionNumber;
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
setState(() {});
|
setState(() {});
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
|
|
||||||
_popup.dismiss(context);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_processScanBarcodes(TaskInfo taskInfo) {
|
_processScanBarcodes(TaskInfo taskInfo) {
|
||||||
_popup = showScanBarcodesPopup(context, taskInfo, (List<String> barcodes) {
|
showScanBarcodesPopup(context, taskInfo, (List<String> barcodes) {
|
||||||
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.codes = [];
|
||||||
|
for(var barcode in barcodes) {
|
||||||
|
answer.codes!.add(barcode);
|
||||||
|
}
|
||||||
|
|
||||||
taskInfo.additionalText = "Barcodes gescannt";
|
taskInfo.additionalText = "Barcodes gescannt";
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
setState(() {});
|
setState(() {});
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
|
|
||||||
_popup.dismiss(context);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,10 +304,11 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _processStationNotice(TaskInfo taskInfo) {
|
void _processStationNotice(TaskInfo taskInfo) {
|
||||||
_popup = showStationNoticePopup(context, taskInfo, (notice) {
|
showStationNoticePopup(context, taskInfo, (notice) {
|
||||||
_popup.dismiss(context);
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.val = notice;
|
||||||
|
|
||||||
taskInfo.additionalText = notice;
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
@@ -311,22 +318,28 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _processReceiptGiver(TaskInfo taskInfo) {
|
void _processReceiptGiver(TaskInfo taskInfo) {
|
||||||
_popup = showReceiptGiverPopup(context, taskInfo, (receiptGiver) {
|
showReceiptGiverPopup(context, taskInfo, (receiptGiver) {
|
||||||
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.val = receiptGiver;
|
||||||
|
|
||||||
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
taskInfo.additionalText = receiptGiver;
|
taskInfo.additionalText = receiptGiver;
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
setState(() {});
|
setState(() {});
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
|
|
||||||
_popup.dismiss(context);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _processPickupDeliveryStatusTask(TaskInfo taskInfo) {
|
void _processPickupDeliveryStatusTask(TaskInfo taskInfo) {
|
||||||
Future.delayed(const Duration(seconds: 1), () async {
|
Future.delayed(const Duration(seconds: 1), () async {
|
||||||
showPickupDeliveryStatusPopup(context, taskInfo, (tourEntry) {
|
showPickupDeliveryStatusPopup(context, taskInfo, (tourEntry) {
|
||||||
taskInfo.additionalText = tourEntry!.text;
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.code = tourEntry!.code;
|
||||||
|
|
||||||
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
|
taskInfo.additionalText = tourEntry.text;
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
_finishTaskProcessing(taskInfo);
|
_finishTaskProcessing(taskInfo);
|
||||||
@@ -341,6 +354,10 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
|
|
||||||
Future.delayed(const Duration(seconds: 1), () async {
|
Future.delayed(const Duration(seconds: 1), () async {
|
||||||
showSignaturePopup(context, taskInfo, () {
|
showSignaturePopup(context, taskInfo, () {
|
||||||
|
var answer = _createAnswerHeader(taskInfo);
|
||||||
|
answer.sign = 'A110';
|
||||||
|
|
||||||
|
taskInfo.answer = jsonEncode(answer.toJson());
|
||||||
taskInfo.completed = true;
|
taskInfo.completed = true;
|
||||||
|
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
@@ -395,6 +412,22 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
MqttCore.instance.publishPayloadMessage("job", finTaskMessage.toJson());
|
MqttCore.instance.publishPayloadMessage("job", finTaskMessage.toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FinTourTask _createAnswerHeader(TaskInfo taskInfo) {
|
||||||
|
var position = MyApp.currentPosition;
|
||||||
|
|
||||||
|
var finTourTask = FinTourTask();
|
||||||
|
finTourTask.sId = taskInfo.task.sId;
|
||||||
|
finTourTask.time = DateTime.now().toIso8601String();
|
||||||
|
finTourTask.pos = FinTaskPos();
|
||||||
|
if (position != null) {
|
||||||
|
finTourTask.pos.lat = position.latitude;
|
||||||
|
finTourTask.pos.long = position.longitude;
|
||||||
|
finTourTask.pos.acc = position.accuracy.toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
return finTourTask;
|
||||||
|
}
|
||||||
|
|
||||||
_sendFinTourMessage() async {
|
_sendFinTourMessage() async {
|
||||||
var finTourMessage = FinTourMessage();
|
var finTourMessage = FinTourMessage();
|
||||||
finTourMessage.finTour = FinTour();
|
finTourMessage.finTour = FinTour();
|
||||||
@@ -412,19 +445,16 @@ class _TaskListPageState extends State<TaskListPage> {
|
|||||||
|
|
||||||
finTourMessage.finTour.tasks = [];
|
finTourMessage.finTour.tasks = [];
|
||||||
for(var taskInfo in _taskList) {
|
for(var taskInfo in _taskList) {
|
||||||
var finTourTask = FinTourTask();
|
if (taskInfo.answer != null) {
|
||||||
finTourTask.sId = taskInfo.task.sId;
|
var finTourTask = FinTourTask.fromJson(jsonDecode(taskInfo.answer!));
|
||||||
finTourTask.time = DateTime.now().toIso8601String();
|
|
||||||
finTourTask.pos = FinTaskPos();
|
|
||||||
finTourTask.pos.lat = 0;
|
|
||||||
finTourTask.pos.long = 0;
|
|
||||||
|
|
||||||
finTourMessage.finTour.tasks.add(finTourTask);
|
finTourMessage.finTour.tasks.add(finTourTask);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MqttCore.instance.publishPayloadMessage("job", finTourMessage.toJson());
|
MqttCore.instance.publishPayloadMessage("fin_tour", finTourMessage.toJson());
|
||||||
|
|
||||||
widget.tour.state = 9;
|
widget.tour.state = Constants.stateFinishedNotConfirmed;
|
||||||
await MyApp.isarInstance.writeTxn(() async {
|
await MyApp.isarInstance.writeTxn(() async {
|
||||||
await MyApp.isarInstance.jobs.put(widget.job);
|
await MyApp.isarInstance.jobs.put(widget.job);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
import 'package:stadtbote/model/tour_task.dart';
|
import 'package:stadtbote/model/tour_task.dart';
|
||||||
|
import 'package:stadtbote/protocoll_messages/fin_tour_message.dart';
|
||||||
|
|
||||||
import '../tools/util.dart';
|
import '../tools/util.dart';
|
||||||
|
|
||||||
|
|||||||
+12
-31
@@ -1,11 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/main.dart';
|
import 'package:stadtbote/main.dart';
|
||||||
import 'package:stadtbote/model/session_status.dart';
|
import 'package:stadtbote/model/session_status.dart';
|
||||||
import 'package:stadtbote/tools/mqtt_core.dart';
|
import 'package:stadtbote/tools/mqtt_core.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
void showInfosPopup(BuildContext context, SessionStatus? status) {
|
void showInfosPopup(BuildContext context, SessionStatus? status) async {
|
||||||
var text = "Versionsnummer: a203\n";
|
var text = "Versionsnummer: a203\n";
|
||||||
text += "Verbindungsstatus: ${MqttCore.instance.connectionState == ConnectionStateEnum.connected ? "Verbunden" : "NICHT verbunden"}\n";
|
text += "Verbindungsstatus: ${MqttCore.instance.connectionState == ConnectionStateEnum.connected ? "Verbunden" : "NICHT verbunden"}\n";
|
||||||
text += "GPS-Status: ${MyApp.currentPosition != null ? MyApp.currentPosition!.timestamp.toString() : "Unbekannt"}\n";
|
text += "GPS-Status: ${MyApp.currentPosition != null ? MyApp.currentPosition!.timestamp.toString() : "Unbekannt"}\n";
|
||||||
@@ -22,31 +21,14 @@ void showInfosPopup(BuildContext context, SessionStatus? status) {
|
|||||||
text += "Keine Informationen gefunden";
|
text += "Keine Informationen gefunden";
|
||||||
}
|
}
|
||||||
|
|
||||||
showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
key: GlobalKey(),
|
key: GlobalKey(),
|
||||||
height: 350,
|
height: 350,
|
||||||
@@ -73,8 +55,7 @@ void showInfosPopup(BuildContext context, SessionStatus? status) {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
));
|
||||||
);
|
}));
|
||||||
},
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
+19
-46
@@ -3,42 +3,24 @@ import 'dart:async';
|
|||||||
import 'package:animated_toggle_switch/animated_toggle_switch.dart';
|
import 'package:animated_toggle_switch/animated_toggle_switch.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_map/flutter_map.dart';
|
import 'package:flutter_map/flutter_map.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
|
|
||||||
import '../model/job_tour.dart';
|
import '../model/job_tour.dart';
|
||||||
|
|
||||||
void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList) {
|
showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList) async {
|
||||||
showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, 800),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 300),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
var mapController = MapController();
|
var mapController = MapController();
|
||||||
Map<int, StreamController<bool>> streamController = {};
|
Map<int, StreamController<bool>> streamController = {};
|
||||||
|
|
||||||
List<Widget> tourWidgets = [];
|
List<Widget> tourWidgets = [];
|
||||||
for(JobTour tour in tourList) {
|
for (JobTour tour in tourList) {
|
||||||
var currentStreamController = StreamController<bool>();
|
var currentStreamController = StreamController<bool>();
|
||||||
streamController[tour.sort] = currentStreamController;
|
streamController[tour.sort] = currentStreamController;
|
||||||
|
|
||||||
@@ -93,8 +75,7 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
height: 2,
|
height: 2,
|
||||||
color: tourSelected ? Colors.green : Colors.transparent,
|
color: tourSelected ? Colors.green : Colors.transparent,
|
||||||
);
|
);
|
||||||
}
|
}),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -106,12 +87,9 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
|
|
||||||
List<Marker> markers = [];
|
List<Marker> markers = [];
|
||||||
for (var tour in tourList) {
|
for (var tour in tourList) {
|
||||||
markers.add(
|
markers.add(Marker(
|
||||||
Marker(
|
|
||||||
builder: (context) => const Icon(Icons.person_pin_circle, size: 56, color: Colors.blue),
|
builder: (context) => const Icon(Icons.person_pin_circle, size: 56, color: Colors.blue),
|
||||||
point: LatLng(tour.pos!.lat, tour.pos!.long)
|
point: LatLng(tour.pos!.lat, tour.pos!.long)));
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
@@ -140,8 +118,7 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: tourWidgets,
|
children: tourWidgets,
|
||||||
),
|
),
|
||||||
)
|
)),
|
||||||
),
|
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
@@ -169,9 +146,7 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
mapController.move(mapController.center, b ? 14.0 : 16.0);
|
mapController.move(mapController.center, b ? 14.0 : 16.0);
|
||||||
},
|
},
|
||||||
colorBuilder: (b) => b ? Colors.red : Colors.green,
|
colorBuilder: (b) => b ? Colors.red : Colors.green,
|
||||||
textBuilder: (value) => value
|
textBuilder: (value) => value ? const Center(child: Text('Fern')) : const Center(child: Text('Nah')),
|
||||||
? const Center(child: Text('Fern'))
|
|
||||||
: const Center(child: Text('Nah')),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -180,8 +155,7 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
),
|
),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
Expanded(
|
Expanded(
|
||||||
child:
|
child: AbsorbPointer(
|
||||||
AbsorbPointer(
|
|
||||||
absorbing: true,
|
absorbing: true,
|
||||||
child: FlutterMap(
|
child: FlutterMap(
|
||||||
mapController: mapController,
|
mapController: mapController,
|
||||||
@@ -204,8 +178,7 @@ void showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourL
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
));
|
||||||
);
|
}));
|
||||||
},
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
@@ -1,38 +1,27 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
KumiPopupWindow showTaskArrivedPopup(BuildContext context, TaskInfo taskInfo, Function() onFinished) {
|
showTaskArrivedPopup(BuildContext context, TaskInfo taskInfo, Function() onFinished) async {
|
||||||
return showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context)
|
||||||
gravity: KumiPopupGravity.center,
|
{
|
||||||
//curve: Curves.elasticOut,
|
return AlertDialog(
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
contentPadding: EdgeInsets.zero,
|
||||||
clickOutDismiss: true,
|
shadowColor: Colors.transparent,
|
||||||
clickBackDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
customAnimation: false,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
key: GlobalKey(),
|
key: GlobalKey(),
|
||||||
height: MediaQuery.of(context).size.height * 0.2,
|
height: MediaQuery
|
||||||
width: MediaQuery.of(context).size.width * 0.8,
|
.of(context)
|
||||||
|
.size
|
||||||
|
.height * 0.2,
|
||||||
|
width: MediaQuery
|
||||||
|
.of(context)
|
||||||
|
.size
|
||||||
|
.width * 0.8,
|
||||||
child: Container(
|
child: Container(
|
||||||
height: 100,
|
height: 100,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
@@ -49,14 +38,17 @@ KumiPopupWindow showTaskArrivedPopup(BuildContext context, TaskInfo taskInfo, Fu
|
|||||||
children: [
|
children: [
|
||||||
Text(taskInfo.task.topic),
|
Text(taskInfo.task.topic),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
getDefaultButton(taskInfo.task.topic, () => {
|
getDefaultButton(taskInfo.task.topic, () =>
|
||||||
|
{
|
||||||
|
Navigator.of(context).pop(),
|
||||||
|
|
||||||
onFinished()
|
onFinished()
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
},
|
}));
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,35 +1,17 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
KumiPopupWindow showComissionNumberPopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) {
|
showComissionNumberPopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) async {
|
||||||
return showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
TextEditingController textEditingController = TextEditingController();
|
TextEditingController textEditingController = TextEditingController();
|
||||||
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
@@ -53,16 +35,19 @@ KumiPopupWindow showComissionNumberPopup(BuildContext context, TaskInfo taskInfo
|
|||||||
const Text('Bitte geben Sie die Kommisionsnummer ein'),
|
const Text('Bitte geben Sie die Kommisionsnummer ein'),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
Util.getDefaultTextField('Kommisionsnummer',
|
Util.getDefaultTextField('Kommisionsnummer',
|
||||||
type: TextInputType.text, formatter: [FilteringTextInputFormatter.singleLineFormatter], controller: textEditingController, autofocus: true),
|
type: TextInputType.text,
|
||||||
|
formatter: [FilteringTextInputFormatter.singleLineFormatter],
|
||||||
|
controller: textEditingController,
|
||||||
|
autofocus: true),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
getDefaultButton('Übernehmen', () => {
|
getDefaultButton('Übernehmen', () => {
|
||||||
onFinished(textEditingController.text)
|
Navigator.of(context).pop(),
|
||||||
})
|
|
||||||
|
onFinished(textEditingController.text)})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
},
|
}));
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
// ignore: unused_import
|
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/model/tour_task.dart';
|
import 'package:stadtbote/model/tour_task.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
@@ -12,7 +10,7 @@ showPickupDeliveryStatusPopup(BuildContext context, TaskInfo taskInfo, Function(
|
|||||||
entries.add(dropdownMenuEntry);
|
entries.add(dropdownMenuEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
await showDialog<void>(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
TourEntry? selectedTourEntry;
|
TourEntry? selectedTourEntry;
|
||||||
|
|||||||
@@ -1,35 +1,17 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
KumiPopupWindow showReceiptGiverPopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) {
|
showReceiptGiverPopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) async {
|
||||||
return showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
TextEditingController textEditingController = TextEditingController();
|
TextEditingController textEditingController = TextEditingController();
|
||||||
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
@@ -53,16 +35,19 @@ KumiPopupWindow showReceiptGiverPopup(BuildContext context, TaskInfo taskInfo, F
|
|||||||
Text(taskInfo.task.topic),
|
Text(taskInfo.task.topic),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
Util.getDefaultTextField(taskInfo.task.topic,
|
Util.getDefaultTextField(taskInfo.task.topic,
|
||||||
type: TextInputType.text, formatter: [FilteringTextInputFormatter.singleLineFormatter], controller: textEditingController, autofocus: true),
|
type: TextInputType.text,
|
||||||
|
formatter: [FilteringTextInputFormatter.singleLineFormatter],
|
||||||
|
controller: textEditingController,
|
||||||
|
autofocus: true),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
getDefaultButton('Übernehmen', () => {
|
getDefaultButton('Übernehmen', () => {
|
||||||
onFinished(textEditingController.text)
|
Navigator.of(context).pop(),
|
||||||
})
|
|
||||||
|
onFinished(textEditingController.text)})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
},
|
}));
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,36 +1,18 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
|
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
KumiPopupWindow showScanBarcodesPopup(BuildContext context, TaskInfo taskInfo, Function(List<String> barcodes) onFinished) {
|
showScanBarcodesPopup(BuildContext context, TaskInfo taskInfo, Function(List<String> barcodes) onFinished) async {
|
||||||
return showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
List<String> scannedBarcodes = [];
|
List<String> scannedBarcodes = [];
|
||||||
|
|
||||||
final ValueNotifier<List<Widget>> scannedBarcodeWidgetsNotifier = ValueNotifier<List<Widget>>([]);
|
final ValueNotifier<List<Widget>> scannedBarcodeWidgetsNotifier = ValueNotifier<List<Widget>>([]);
|
||||||
@@ -38,7 +20,7 @@ KumiPopupWindow showScanBarcodesPopup(BuildContext context, TaskInfo taskInfo, F
|
|||||||
List<Widget> createBarcodeWidgets() {
|
List<Widget> createBarcodeWidgets() {
|
||||||
List<Widget> barcodeWidgets = [];
|
List<Widget> barcodeWidgets = [];
|
||||||
|
|
||||||
for(var barcode in scannedBarcodes) {
|
for (var barcode in scannedBarcodes) {
|
||||||
barcodeWidgets.add(SizedBox(
|
barcodeWidgets.add(SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
child: Center(child: Text(barcode)),
|
child: Center(child: Text(barcode)),
|
||||||
@@ -96,29 +78,21 @@ KumiPopupWindow showScanBarcodesPopup(BuildContext context, TaskInfo taskInfo, F
|
|||||||
child: ValueListenableBuilder<List<Widget>>(
|
child: ValueListenableBuilder<List<Widget>>(
|
||||||
valueListenable: scannedBarcodeWidgetsNotifier,
|
valueListenable: scannedBarcodeWidgetsNotifier,
|
||||||
builder: (context, value, child) {
|
builder: (context, value, child) {
|
||||||
return ListView(
|
return ListView(padding: const EdgeInsets.all(8), children: value);
|
||||||
padding: const EdgeInsets.all(8),
|
|
||||||
children: value
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
getDefaultButton('Hinzufügen', buttonHeight: 50, () => {
|
getDefaultButton('Hinzufügen', buttonHeight: 50, () => {scanBarcode()}),
|
||||||
scanBarcode()
|
|
||||||
}),
|
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
getDefaultButton('Übernehmen', buttonHeight: 50, () => {
|
getDefaultButton('Übernehmen', buttonHeight: 50, () => {
|
||||||
onFinished(scannedBarcodes)
|
Navigator.of(context).pop(),
|
||||||
})
|
|
||||||
|
onFinished(scannedBarcodes)})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
},
|
}));
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
*/
|
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:signature/signature.dart';
|
import 'package:signature/signature.dart';
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
showSignaturePopup(BuildContext context, TaskInfo taskInfo, Function() onFinished) async {
|
showSignaturePopup(BuildContext context, TaskInfo taskInfo, Function() onFinished) async {
|
||||||
await showDialog<void>(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
@@ -46,7 +45,10 @@ showSignaturePopup(BuildContext context, TaskInfo taskInfo, Function() onFinishe
|
|||||||
backgroundColor: Colors.lightBlueAccent,
|
backgroundColor: Colors.lightBlueAccent,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
getDefaultButton('Übernehmen', buttonHeight: 50, () => {Navigator.of(context).pop(), onFinished()})
|
getDefaultButton('Übernehmen', buttonHeight: 50, () => {
|
||||||
|
Navigator.of(context).pop(),
|
||||||
|
|
||||||
|
onFinished()})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,35 +1,17 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:kumi_popup_window/kumi_popup_window.dart';
|
|
||||||
import 'package:stadtbote/model/task_info.dart';
|
import 'package:stadtbote/model/task_info.dart';
|
||||||
import 'package:stadtbote/tools/util.dart';
|
import 'package:stadtbote/tools/util.dart';
|
||||||
|
|
||||||
KumiPopupWindow showStationNoticePopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) {
|
showStationNoticePopup(BuildContext context, TaskInfo taskInfo, Function(String) onFinished) async {
|
||||||
return showPopupWindow(
|
await showDialog(
|
||||||
context,
|
context: context,
|
||||||
//childSize:Size(240, MediaQuery.of(context).size.width * 0.8),
|
builder: (BuildContext context) {
|
||||||
gravity: KumiPopupGravity.center,
|
return AlertDialog(
|
||||||
//curve: Curves.elasticOut,
|
contentPadding: EdgeInsets.zero,
|
||||||
bgColor: Colors.grey.withOpacity(0.5),
|
shadowColor: Colors.transparent,
|
||||||
clickOutDismiss: true,
|
backgroundColor: Colors.white,
|
||||||
clickBackDismiss: true,
|
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
|
||||||
customAnimation: false,
|
|
||||||
customPop: false,
|
|
||||||
customPage: false,
|
|
||||||
// targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox),
|
|
||||||
//needSafeDisplay: true,
|
|
||||||
underStatusBar: false,
|
|
||||||
underAppBar: false,
|
|
||||||
//offsetX: -180,
|
|
||||||
//offsetY: 50,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
onShowStart: (pop) {},
|
|
||||||
onShowFinish: (pop) {},
|
|
||||||
onDismissStart: (pop) {},
|
|
||||||
onDismissFinish: (pop) {},
|
|
||||||
onClickOut: (pop) {},
|
|
||||||
onClickBack: (pop) {},
|
|
||||||
childFun: (pop) {
|
|
||||||
TextEditingController textEditingController = TextEditingController();
|
TextEditingController textEditingController = TextEditingController();
|
||||||
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
@@ -62,15 +44,15 @@ KumiPopupWindow showStationNoticePopup(BuildContext context, TaskInfo taskInfo,
|
|||||||
autofocus: true),
|
autofocus: true),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
getDefaultButton('Übernehmen', buttonHeight: 50, () => {onFinished(textEditingController.text)})
|
getDefaultButton('Übernehmen', buttonHeight: 50, () => {
|
||||||
|
Navigator.of(context).pop(),
|
||||||
|
|
||||||
|
onFinished(textEditingController.text)})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
*/
|
|
||||||
@@ -10,7 +10,7 @@ Future<void> showTakePhotosPopup(BuildContext context, TaskInfo taskInfo, Functi
|
|||||||
|
|
||||||
ValueNotifier<List<Widget>> imageWidgetsListNotifier = ValueNotifier<List<Widget>>([]);
|
ValueNotifier<List<Widget>> imageWidgetsListNotifier = ValueNotifier<List<Widget>>([]);
|
||||||
|
|
||||||
await showDialog<void>(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:isar/isar.dart';
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
part 'fin_task_message.g.dart';
|
part 'fin_task_message.g.dart';
|
||||||
@@ -43,6 +44,7 @@ class Task {
|
|||||||
Map<String, dynamic> toJson() => _$TaskToJson(this);
|
Map<String, dynamic> toJson() => _$TaskToJson(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@embedded
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
class FinTaskPos {
|
class FinTaskPos {
|
||||||
late double lat;
|
late double lat;
|
||||||
|
|||||||
@@ -2,6 +2,273 @@
|
|||||||
|
|
||||||
part of 'fin_task_message.dart';
|
part of 'fin_task_message.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// IsarEmbeddedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types
|
||||||
|
|
||||||
|
const FinTaskPosSchema = Schema(
|
||||||
|
name: r'FinTaskPos',
|
||||||
|
id: 7757904122564928017,
|
||||||
|
properties: {
|
||||||
|
r'acc': PropertySchema(
|
||||||
|
id: 0,
|
||||||
|
name: r'acc',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'lat': PropertySchema(
|
||||||
|
id: 1,
|
||||||
|
name: r'lat',
|
||||||
|
type: IsarType.double,
|
||||||
|
),
|
||||||
|
r'long': PropertySchema(
|
||||||
|
id: 2,
|
||||||
|
name: r'long',
|
||||||
|
type: IsarType.double,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
estimateSize: _finTaskPosEstimateSize,
|
||||||
|
serialize: _finTaskPosSerialize,
|
||||||
|
deserialize: _finTaskPosDeserialize,
|
||||||
|
deserializeProp: _finTaskPosDeserializeProp,
|
||||||
|
);
|
||||||
|
|
||||||
|
int _finTaskPosEstimateSize(
|
||||||
|
FinTaskPos object,
|
||||||
|
List<int> offsets,
|
||||||
|
Map<Type, List<int>> allOffsets,
|
||||||
|
) {
|
||||||
|
var bytesCount = offsets.last;
|
||||||
|
return bytesCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _finTaskPosSerialize(
|
||||||
|
FinTaskPos object,
|
||||||
|
IsarWriter writer,
|
||||||
|
List<int> offsets,
|
||||||
|
Map<Type, List<int>> allOffsets,
|
||||||
|
) {
|
||||||
|
writer.writeLong(offsets[0], object.acc);
|
||||||
|
writer.writeDouble(offsets[1], object.lat);
|
||||||
|
writer.writeDouble(offsets[2], object.long);
|
||||||
|
}
|
||||||
|
|
||||||
|
FinTaskPos _finTaskPosDeserialize(
|
||||||
|
Id id,
|
||||||
|
IsarReader reader,
|
||||||
|
List<int> offsets,
|
||||||
|
Map<Type, List<int>> allOffsets,
|
||||||
|
) {
|
||||||
|
final object = FinTaskPos();
|
||||||
|
object.acc = reader.readLong(offsets[0]);
|
||||||
|
object.lat = reader.readDouble(offsets[1]);
|
||||||
|
object.long = reader.readDouble(offsets[2]);
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
P _finTaskPosDeserializeProp<P>(
|
||||||
|
IsarReader reader,
|
||||||
|
int propertyId,
|
||||||
|
int offset,
|
||||||
|
Map<Type, List<int>> allOffsets,
|
||||||
|
) {
|
||||||
|
switch (propertyId) {
|
||||||
|
case 0:
|
||||||
|
return (reader.readLong(offset)) as P;
|
||||||
|
case 1:
|
||||||
|
return (reader.readDouble(offset)) as P;
|
||||||
|
case 2:
|
||||||
|
return (reader.readDouble(offset)) as P;
|
||||||
|
default:
|
||||||
|
throw IsarError('Unknown property with id $propertyId');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension FinTaskPosQueryFilter
|
||||||
|
on QueryBuilder<FinTaskPos, FinTaskPos, QFilterCondition> {
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> accEqualTo(
|
||||||
|
int value) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.equalTo(
|
||||||
|
property: r'acc',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> accGreaterThan(
|
||||||
|
int value, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||||
|
include: include,
|
||||||
|
property: r'acc',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> accLessThan(
|
||||||
|
int value, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.lessThan(
|
||||||
|
include: include,
|
||||||
|
property: r'acc',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> accBetween(
|
||||||
|
int lower,
|
||||||
|
int upper, {
|
||||||
|
bool includeLower = true,
|
||||||
|
bool includeUpper = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.between(
|
||||||
|
property: r'acc',
|
||||||
|
lower: lower,
|
||||||
|
includeLower: includeLower,
|
||||||
|
upper: upper,
|
||||||
|
includeUpper: includeUpper,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> latEqualTo(
|
||||||
|
double value, {
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.equalTo(
|
||||||
|
property: r'lat',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> latGreaterThan(
|
||||||
|
double value, {
|
||||||
|
bool include = false,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||||
|
include: include,
|
||||||
|
property: r'lat',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> latLessThan(
|
||||||
|
double value, {
|
||||||
|
bool include = false,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.lessThan(
|
||||||
|
include: include,
|
||||||
|
property: r'lat',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> latBetween(
|
||||||
|
double lower,
|
||||||
|
double upper, {
|
||||||
|
bool includeLower = true,
|
||||||
|
bool includeUpper = true,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.between(
|
||||||
|
property: r'lat',
|
||||||
|
lower: lower,
|
||||||
|
includeLower: includeLower,
|
||||||
|
upper: upper,
|
||||||
|
includeUpper: includeUpper,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> longEqualTo(
|
||||||
|
double value, {
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.equalTo(
|
||||||
|
property: r'long',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> longGreaterThan(
|
||||||
|
double value, {
|
||||||
|
bool include = false,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||||
|
include: include,
|
||||||
|
property: r'long',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> longLessThan(
|
||||||
|
double value, {
|
||||||
|
bool include = false,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.lessThan(
|
||||||
|
include: include,
|
||||||
|
property: r'long',
|
||||||
|
value: value,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<FinTaskPos, FinTaskPos, QAfterFilterCondition> longBetween(
|
||||||
|
double lower,
|
||||||
|
double upper, {
|
||||||
|
bool includeLower = true,
|
||||||
|
bool includeUpper = true,
|
||||||
|
double epsilon = Query.epsilon,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.between(
|
||||||
|
property: r'long',
|
||||||
|
lower: lower,
|
||||||
|
includeLower: includeLower,
|
||||||
|
upper: upper,
|
||||||
|
includeUpper: includeUpper,
|
||||||
|
epsilon: epsilon,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension FinTaskPosQueryObject
|
||||||
|
on QueryBuilder<FinTaskPos, FinTaskPos, QFilterCondition> {}
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:isar/isar.dart';
|
||||||
import 'package:json_annotation/json_annotation.dart';
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
import 'package:stadtbote/protocoll_messages/accept_job_message.dart';
|
import 'package:stadtbote/protocoll_messages/accept_job_message.dart';
|
||||||
import 'package:stadtbote/protocoll_messages/fin_task_message.dart';
|
import 'package:stadtbote/protocoll_messages/fin_task_message.dart';
|
||||||
@@ -6,6 +7,7 @@ part 'fin_tour_message.g.dart';
|
|||||||
|
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
class FinTourMessage {
|
class FinTourMessage {
|
||||||
|
@JsonKey(name: 'fin_tour')
|
||||||
late FinTour finTour;
|
late FinTour finTour;
|
||||||
|
|
||||||
FinTourMessage();
|
FinTourMessage();
|
||||||
@@ -40,6 +42,14 @@ class FinTourTask {
|
|||||||
|
|
||||||
late String time;
|
late String time;
|
||||||
|
|
||||||
|
String? val;
|
||||||
|
|
||||||
|
int? code;
|
||||||
|
|
||||||
|
String? sign;
|
||||||
|
|
||||||
|
List<String>? codes;
|
||||||
|
|
||||||
late FinTaskPos pos;
|
late FinTaskPos pos;
|
||||||
|
|
||||||
FinTourTask();
|
FinTourTask();
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -431,7 +431,7 @@ class MqttCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _startTrackTimer() {
|
void _startTrackTimer() {
|
||||||
_trackTimer = Timer(const Duration(seconds: 60), () {
|
_trackTimer ??= Timer.periodic(const Duration(seconds: 60), (Timer t) {
|
||||||
var position = MyApp.currentPosition;
|
var position = MyApp.currentPosition;
|
||||||
if (position != null) {
|
if (position != null) {
|
||||||
var trackMessage = TrackMessage();
|
var trackMessage = TrackMessage();
|
||||||
@@ -449,6 +449,7 @@ class MqttCore {
|
|||||||
void _cancelTrackTimer() {
|
void _cancelTrackTimer() {
|
||||||
if (_trackTimer != null && _trackTimer!.isActive) {
|
if (_trackTimer != null && _trackTimer!.isActive) {
|
||||||
_trackTimer!.cancel();
|
_trackTimer!.cancel();
|
||||||
|
_trackTimer = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-2
@@ -1,3 +1,4 @@
|
|||||||
|
import 'dart:developer';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:audioplayers/audioplayers.dart';
|
import 'package:audioplayers/audioplayers.dart';
|
||||||
@@ -72,11 +73,11 @@ class Util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static logInfo(String message) {
|
static logInfo(String message) {
|
||||||
debugPrint(message);
|
log(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
static logException(String message) {
|
static logException(String message) {
|
||||||
debugPrint('Exception: $message');
|
log('Exception: $message');
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fastHash(String string) {
|
static int fastHash(String string) {
|
||||||
|
|||||||
@@ -784,14 +784,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.7.1"
|
version: "6.7.1"
|
||||||
kumi_popup_window:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: kumi_popup_window
|
|
||||||
sha256: "3159a2ee307850ab3520cfb162efc1e330aac2e560569e20227bf2ac93ec06d5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.1"
|
|
||||||
latlong2:
|
latlong2:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ dependencies:
|
|||||||
intl: ^0.18.0
|
intl: ^0.18.0
|
||||||
another_stepper: ^1.2.2
|
another_stepper: ^1.2.2
|
||||||
easy_stepper: ^0.6.0
|
easy_stepper: ^0.6.0
|
||||||
kumi_popup_window: ^2.0.1
|
|
||||||
flutter_osm_plugin: ^0.53.4+1
|
flutter_osm_plugin: ^0.53.4+1
|
||||||
routing_client_dart: ^0.4.2
|
routing_client_dart: ^0.4.2
|
||||||
animated_toggle_switch: ^0.6.2
|
animated_toggle_switch: ^0.6.2
|
||||||
|
|||||||
Reference in new issue
Block a user