Files
Aditya Pulipaka e0a41761ec Initial
2025-07-10 18:52:04 -05:00

52 lines
1.2 KiB
Dart

import 'utils.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
final Map<DeviceIdentifier, StreamControllerReemit<bool>> _cglobal = {};
final Map<DeviceIdentifier, StreamControllerReemit<bool>> _dglobal = {};
/// connect & disconnect + update stream
extension Extra on BluetoothDevice {
// convenience
StreamControllerReemit<bool> get _cstream {
_cglobal[remoteId] ??= StreamControllerReemit(initialValue: false);
return _cglobal[remoteId]!;
}
// convenience
StreamControllerReemit<bool> get _dstream {
_dglobal[remoteId] ??= StreamControllerReemit(initialValue: false);
return _dglobal[remoteId]!;
}
// get stream
Stream<bool> get isConnecting {
return _cstream.stream;
}
// get stream
Stream<bool> get isDisconnecting {
return _dstream.stream;
}
// connect & update stream
Future<void> connectAndUpdateStream() async {
_cstream.add(true);
try {
await connect(mtu: null);
} finally {
_cstream.add(false);
}
}
// disconnect & update stream
Future<void> disconnectAndUpdateStream({bool queue = true}) async {
_dstream.add(true);
try {
await disconnect(queue: queue);
} finally {
_dstream.add(false);
}
}
}