getPermissionStream method
Stream<DeviceLocationPermission>
getPermissionStream({
- Duration pollingInterval = const Duration(seconds: 1),
override
Implementation
@override
Stream<DeviceLocationPermission> getPermissionStream({
Duration pollingInterval = const Duration(seconds: 1),
}) {
final controller = StreamController<DeviceLocationPermission>.broadcast();
Timer? timer;
Future<void> emitCurrent() async {
if (controller.isClosed) return;
try {
final permission = await checkPermission();
if (!controller.isClosed) controller.add(permission);
} on Exception catch (e) {
if (!controller.isClosed) controller.addError(e);
}
}
controller.onListen = () {
timer = Timer.periodic(pollingInterval, (_) => emitCurrent());
emitCurrent();
};
controller.onCancel = () {
timer?.cancel();
};
return controller.stream;
}