3 changed files with 187 additions and 3 deletions
@ -1,3 +1,74 @@ |
|||
import 'dart:async'; |
|||
|
|||
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; |
|||
import 'package:get/get.dart'; |
|||
|
|||
class MeetingConnectController extends GetxController {} |
|||
class MeetingConnectController extends GetxController { |
|||
RxString stateStr = '搜索中...'.obs; |
|||
RxBool isRescan = false.obs; |
|||
RxBool isImportedFiles = false.obs; |
|||
|
|||
late StreamSubscription<List<ScanResult>> _scanResultsSubscription; |
|||
late StreamSubscription<bool> _isScanningSubscription; |
|||
BluetoothDevice? _device; |
|||
|
|||
@override |
|||
void onInit() { |
|||
super.onInit(); |
|||
_scanResultsSubscription = FlutterBluePlus.scanResults.listen((results) { |
|||
for (ScanResult item in results) { |
|||
_handlerScanResult(item); |
|||
} |
|||
}); |
|||
_isScanningSubscription = FlutterBluePlus.isScanning.listen((state) { |
|||
if (!state && _device == null) { |
|||
stateStr.value = '未搜索到 AI PEN 设备'; |
|||
isRescan.value = true; |
|||
} else { |
|||
stateStr.value = '搜索中...'; |
|||
isRescan.value = false; |
|||
} |
|||
}); |
|||
startScan(); |
|||
} |
|||
|
|||
@override |
|||
void onClose() { |
|||
_scanResultsSubscription.cancel(); |
|||
_isScanningSubscription.cancel(); |
|||
_stopScan(); |
|||
_disconnect(); |
|||
super.onClose(); |
|||
} |
|||
|
|||
Future<void> startScan() async { |
|||
await FlutterBluePlus.startScan( |
|||
timeout: const Duration(seconds: 15), |
|||
withServices: [ |
|||
Guid('FFF0'), |
|||
], |
|||
withNames: ['AI PEN'], |
|||
); |
|||
} |
|||
|
|||
Future<void> _stopScan() async { |
|||
await FlutterBluePlus.stopScan(); |
|||
} |
|||
|
|||
Future<void> _connect() async { |
|||
await _device?.connect(); |
|||
} |
|||
|
|||
Future<void> _disconnect() async { |
|||
await _device?.disconnect(); |
|||
} |
|||
|
|||
void _handlerScanResult(ScanResult result) async { |
|||
if (result.device.platformName == 'AI PEN') { |
|||
_device = result.device; |
|||
await _stopScan(); |
|||
await _connect(); |
|||
stateStr.value = '已连接到 AI PEN 设备'; |
|||
} |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue