stream property

  1. @override
Stream<Measurement> get stream
override

The stream of Measurement objects for this StreamProbe. Must be implemented by sub-classes.

Implementation

@override
Stream<Measurement> get stream async* {
  await for (final monitoringResult
      in flutterBeacon.monitoring(beaconRegions)) {
    if (monitoringResult.monitoringState == MonitoringState.inside) {
      debug(
          '$runtimeType - Entered region: ${monitoringResult.region.identifier}');

      yield* flutterBeacon.ranging(beaconRegions).map(
        (rangingResult) {
          final closeBeacons = rangingResult.beacons
              .where((beacon) => beacon.accuracy <= beaconDistance)
              .toList();

          return Measurement.fromData(BeaconData.fromRegionAndBeacons(
            region: rangingResult.region.identifier,
            beacons: closeBeacons,
          ));
        },
      );
    } else if (monitoringResult.monitoringState == MonitoringState.outside) {
      debug(
          '$runtimeType - Exited region: ${monitoringResult.region.identifier}');
    }
  }
}