52 lines
1.2 KiB
Dart
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);
|
|
}
|
|
}
|
|
}
|