geofenceEvents static method

Stream<UGeofenceEvent> geofenceEvents()

Enter / exit events, including ones that happened while the app was not running (delivered on listen).

Implementation

static Stream<UGeofenceEvent> geofenceEvents() {
  if (kIsWeb) return _softEvents.stream;
  final Stream<UGeofenceEvent> native = _geofence.receiveBroadcastStream().map((dynamic e) => UGeofenceEvent.fromMap(e as Map<Object?, Object?>)).handleError((Object _) {});
  final StreamController<UGeofenceEvent> merged = StreamController<UGeofenceEvent>.broadcast();
  StreamSubscription<UGeofenceEvent>? a;
  StreamSubscription<UGeofenceEvent>? b;
  merged
    ..onListen = () {
      a = native.listen(merged.add);
      b = _softEvents.stream.listen(merged.add);
    }
    ..onCancel = () async {
      await a?.cancel();
      await b?.cancel();
      await merged.close();
    };
  return merged.stream;
}