watchPosition method

Stream<Geoposition> watchPosition ({bool enableHighAccuracy, Duration timeout Duration maximumAge })

Implementation

Stream<Geoposition> watchPosition(
    {bool enableHighAccuracy, Duration timeout, Duration maximumAge}) {
  var options = {};
  if (enableHighAccuracy != null) {
    options['enableHighAccuracy'] = enableHighAccuracy;
  }
  if (timeout != null) {
    options['timeout'] = timeout.inMilliseconds;
  }
  if (maximumAge != null) {
    options['maximumAge'] = maximumAge.inMilliseconds;
  }

  int watchId;
  StreamController<Geoposition> controller =
      new StreamController<Geoposition>(
          sync: true,
          onCancel: () {
            assert(watchId != null);
            _clearWatch(watchId);
          });
  controller.onListen = () {
    assert(watchId == null);
    watchId = _watchPosition((position) {
      controller.add(_ensurePosition(position));
    }, (error) {
      controller.addError(error);
    }, options);
  };

  return controller.stream;
}