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}',
      );
    }
  }
}