3

I'm using geolocator and google_maps_flutter in my app to get user location, passing by getPositionStream. The Map is the first screen of the app, and when I get user location it work fine, and the camera of the map zoom correctly. But the user can login to his account, and it's recreated the Map. And my problem is here. When the login is done, my stream with my new location is not listen :/ I need to reload the app for that

My function in my viewModel

final Stream<Position>? stream = await _locationService.getLocation();
    if (stream != null) {
      stream.listen((location) async {
        final newLocation =
            CameraPosition(target: LatLng(location.latitude, location.longitude), zoom: 15);
        if (controllerCompleter != null) {
          final GoogleMapController controller = await controllerCompleter.future;
          controller.animateCamera(CameraUpdate.newCameraPosition(newLocation));
        }
      });
    }

In the locationService:

 Future<Stream<Position>?> getLocation() async {
    bool _serviceEnabled;
    LocationPermission _permissionGranted;
    _serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!_serviceEnabled) {
      return null; // Use France's GPS coordinates by default
    }

    _permissionGranted = await Geolocator.checkPermission();
    if (_permissionGranted == LocationPermission.denied) {
      _permissionGranted = await Geolocator.requestPermission();
      if (_permissionGranted == LocationPermission.denied ||
          _permissionGranted == LocationPermission.deniedForever) {
        return null; // Use France's GPS coordinates by default
      } else {
        return Geolocator.getPositionStream(locationSettings: locationSettings);
      }
    } else {
      return Geolocator.getPositionStream(locationSettings: locationSettings);
    }
  }

If anyone have an idea of what I'm doing wrong. Thanks in advance

Velliane
  • 65
  • 7
  • Hi it shouldn't be a stream you are returning, it should be a stream subscription and then handle the data and errors using the onData and onError handlers – SVG Oct 03 '22 at 07:00
  • And also you should listen for location updates – SVG Oct 03 '22 at 07:00

0 Answers0