stream property
The stream of Measurement
objects for this StreamProbe.
Must be implemented by sub-classes.
Implementation
@override
Stream<Measurement>? get stream {
late StreamSubscription<battery.BatteryState> subscription;
late StreamController<Measurement> controller;
void onData(battery.BatteryState state) async {
try {
int level = await battery.Battery().batteryLevel;
controller.add(
Measurement.fromData(
BatteryState.fromBatteryState(level, state),
),
);
} catch (error) {
controller.addError(error);
}
}
controller = StreamController<Measurement>(
onListen: () => subscription.resume(),
onPause: () => subscription.pause(),
onResume: () => subscription.resume(),
onCancel: () => subscription.cancel());
subscription = battery.Battery().onBatteryStateChanged.listen(
onData,
onError: (Object error) => controller.addError(error),
onDone: () => controller.close(),
);
return controller.stream.asBroadcastStream();
}