watchPosition static method
Implementation
static Future<int> watchPosition({
int? timeout,
int? interval,
bool? persist,
int? desiredAccuracy,
Map<String, dynamic>? extras,
void Function(Location)? onLocation,
}) async {
final options = <String, dynamic>{};
if (timeout != null) options['timeout'] = timeout;
if (interval != null) options['interval'] = interval;
if (persist != null) options['persist'] = persist;
if (desiredAccuracy != null) options['desiredAccuracy'] = desiredAccuracy;
if (extras != null) options['extras'] = extras;
// Call native iOS method and await the watchId
final int watchId =
await _methodChannel.invokeMethod('watchPosition', options);
_watchPositionCallbacks[watchId] = onLocation;
print("*** watchPositionCallbacks: $_watchPositionCallbacks");
// Ensure we start the stream only once
if (!_isWatchPositionStreamInitialized) {
_eventChannelWatchPosition.receiveBroadcastStream().listen((event) {
final int id = event['streamId'];
final location = Location(event['location']);
final callback = _watchPositionCallbacks[id];
if (callback != null) {
callback(location);
}
});
_isWatchPositionStreamInitialized = true;
}
return watchId;
}