Как реализовать GeoLocator StreamController и получать данные через экраны - Flutter - PullRequest
0 голосов
/ 08 июля 2020

Я реализовал этот пакет https://pub.dev/packages/geolocator, но я не знаю, как использовать StreamSubscription.

class LocationService{

  UserLocation _userLocation;
  
  StreamController<UserLocation> locationUserController;

  var geolocator = Geolocator();
  var locationOptions = LocationOptions(accuracy: LocationAccuracy.high, distanceFilter: 10);

  LocationService(){

    geolocator.getPositionStream(locationOptions).listen(
    (Position position) {
        if (position != null){
          locationUserController.add(UserLocation(
            latitude: position.latitude,
            longitude: position.longitude
          ));
        }
    });
  }
}

Я реализовал GeoLocator. Это устанавливает значения в класс модели UserLocation .

class UserLocation{
  final double latitude;
  final double longitude;

  UserLocation({this.latitude, this.longitude});
}

Как я получаю доступ к этому UserLocation каждый раз, когда значения меняются?

Мне нужно получить доступ к этим данным в MapsScreen

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    //my try. I don't know what I'm doing
    //StreamProvider<UserLocation>(
    //  create: (_) => LocationService().locationUserController,
    //)
    return MaterialApp(
      title: 'UnMatch',
      theme: ThemeData(
        primaryColor: ThemeColor.nero,
      ),
      initialRoute: '/home',
      routes: {
        '/home' : (context) => MapScreen(),
        '/login' : (context) => Login()
      }
    );  
  }
}

Не могли бы вы объяснить и вставить в код, как мне делать? Меня это очень смущает ...

1 Ответ

1 голос
/ 09 июля 2020

Удивительно видеть это, но я видел видео на YouTube с точным кодом, который вам нужно объяснить шаг за шагом.

Вот видео от FilledStacks

...