Erweiterungen

This commit is contained in:
Sven committed 2026-02-14 08:52:06 +01:00
1 parent ba1f7d5440
commit bb3dc9e856
28 files changed
+1672 -1291

No files matched your search

+17 -8
View File
@@ -11,6 +11,9 @@ import '../model/job_tour.dart';
List<Color> _colors = [Colors.red, Colors.green];
showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList) async {
MapController? mapController;
Map<int, StreamController<bool>> streamControllers = {};
await showDialog(
context: context,
builder: (BuildContext context) {
@@ -19,24 +22,24 @@ showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList)
shadowColor: Colors.transparent,
backgroundColor: Colors.white,
content: StatefulBuilder(builder: (BuildContext context, StateSetter setState) {
var mapController = MapController();
Map<int, StreamController<bool>> streamController = {};
mapController = MapController();
streamControllers = {};
List<Widget> tourWidgets = [];
for (JobTour tour in tourList) {
var currentStreamController = StreamController<bool>();
streamController[tour.sort] = currentStreamController;
streamControllers[tour.sort] = currentStreamController;
tourWidgets.add(
GestureDetector(
onTap: () async {
if (tour.pos != null) {
mapController.move(LatLng(tour.pos!.lat, tour.pos!.long), mapController.camera.zoom);
mapController!.move(LatLng(tour.pos!.lat, tour.pos!.long), mapController!.camera.zoom);
streamController[currentTour.sort]!.sink.add(false);
streamControllers[currentTour.sort]!.sink.add(false);
currentTour = tour;
streamController[tour.sort]!.sink.add(true);
streamControllers[tour.sort]!.sink.add(true);
} else {
showAlertDialog('Information', 'Es liegt keine Position für diese Station vor');
}
@@ -158,7 +161,7 @@ showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList)
height: 25,
onChanged: (b) {
valueNotifier.value = b;
mapController.move(mapController.camera.center, b ? 14.0 : 16.0);
mapController!.move(mapController!.camera.center, b ? 14.0 : 16.0);
},
styleBuilder: (i) => ToggleStyle(indicatorColor: i == true ? _colors[0] : _colors[1]),
textBuilder: (value) => value ? const Center(child: Text('Fern')) : const Center(child: Text('Nah')),
@@ -173,7 +176,7 @@ showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList)
child: AbsorbPointer(
absorbing: true,
child: FlutterMap(
mapController: mapController,
mapController: mapController!,
options: MapOptions(
initialCenter: LatLng(currentTour.pos!.lat, currentTour.pos!.long),
initialZoom: 14,
@@ -196,4 +199,10 @@ showMapPopup(BuildContext context, JobTour currentTour, List<JobTour> tourList)
));
}));
});
// Dispose all controllers after dialog is closed
mapController?.dispose();
for (var controller in streamControllers.values) {
controller.close();
}
}