Better location handling on map

This commit is contained in:
2024-09-24 23:48:07 +02:00
parent ed60fcba06
commit d323194ea7
6 changed files with 96 additions and 53 deletions

View File

@@ -7,6 +7,7 @@ import 'package:anyway/structs/landmark.dart';
import 'package:anyway/structs/trip.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:widget_to_marker/widget_to_marker.dart';
@@ -72,6 +73,23 @@ class _NewTripMapState extends State<NewTripMap> {
@override
Widget build(BuildContext context) {
widget.trip.addListener(updateTripDetails);
Future<SharedPreferences> preferences = SharedPreferences.getInstance();
return FutureBuilder(
future: preferences,
builder: (context, snapshot) {
if (snapshot.hasData) {
SharedPreferences prefs = snapshot.data as SharedPreferences;
bool useLocation = prefs.getBool('useLocation') ?? true;
return _buildMap(useLocation);
} else {
return const CircularProgressIndicator();
}
}
);
}
Widget _buildMap(bool useLocation) {
return GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: _cameraPosition,
@@ -80,8 +98,8 @@ class _NewTripMapState extends State<NewTripMap> {
cloudMapId: MAP_ID,
mapToolbarEnabled: false,
zoomControlsEnabled: false,
// TODO: should be loaded from the sharedprefs
myLocationEnabled: true,
myLocationButtonEnabled: false,
myLocationEnabled: useLocation,
);
}
}