getPositionStream method

  1. @override
Stream<Position> getPositionStream([
  1. dynamic failure(
    1. PositionError
    )?
])
override

The position update stream.

Fires whenever the location changed inside the bounds of the RequestSettings.accuracy

Implementation

@override
Stream<Position> getPositionStream([Function(PositionError)? failure]) {
  if (_positionStream != null) {
    return _positionStream!;
  }

  var originalStream = _eventChannelPosition
      .receiveBroadcastStream()
      .handleError((dynamic error) {
    if (failure != null) {
      failure(
          PositionError.fromPlatformException(error as PlatformException));
    } else {
      dev.log(
          'getPositionStream error!!! Uncaught position error: $error. You should provide a failure callback.');
      throw error;
    }
  });

  var positionStream =
      originalStream.asBroadcastStream(onCancel: (controller) {
    controller.cancel();
    _positionStream = null;
  });

  _positionStream = positionStream.map<Position>(
      (dynamic e) => Position.fromMap(e.cast<String, dynamic>()));

  return _positionStream!;
}