Как я могу непрерывно выполнять событие blo c во Флаттере? - PullRequest
0 голосов
/ 03 мая 2020

Я хочу постоянно отслеживать местоположение пользователя в моем приложении. По этой причине я хочу постоянно выполнять событие getLocaiton blo c на моей главной странице. Как я могу это сделать?

Вот мое событие getLocation;

  GetLocationState get initialState => GetLocationState(saveUserCurrentLocation: initialPosition );

  Stream<GetLocationState> mapEventToState(LocationEvent event) async*{

    if (event is GetLocation){

      userLocation.getLocation().then((l){
        currentLatLng = LatLng(l.latitude, l.longitude);

      });


      yield GetLocationState(saveUserCurrentLocation: currentLatLng);


    }
  }

И это моя главная страница

            initialCameraPosition:
                CameraPosition(target: initialPosition, zoom: 10),
            mapType: MapType.terrain,
            onMapCreated: _onMapCreated,
            myLocationEnabled: true,
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              _locationBloc.add(GetLocation());
            },
          ),
        ),
      );
    });
  }

Как можно непрерывно выполнять код в фоновом режиме, не используя событие onPress?

Ответы [ 2 ]

1 голос
/ 03 мая 2020

используйте Timer внутри initState() (сделайте ваш виджет с состоянием, если это не так):

    Timer(Duration(seconds: 5), (){
      _locationBloc.add(GetLocation());
    });
0 голосов
/ 03 мая 2020

Если я понимаю вашу проблему, я думаю, что вы должны использовать потоки для потоковой передачи местоположения. Что-то вроде этого урока:

https://medium.com/flutter-community/build-a-location-service-in-flutter-367a1b212f7a

...