Erweiterungen
This commit is contained in:
1 parent
ba1f7d5440
commit
bb3dc9e856
28 files changed
+1672
-1291
No files matched your search
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user