controller.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'package:get/get.dart';
  2. import 'package:vitalapp/managers/interfaces/permission.dart';
  3. import 'package:vnote_device_plugin/models/device.dart';
  4. import 'package:vitalapp/architecture/defines.dart';
  5. import 'package:vitalapp/managers/interfaces/device.dart';
  6. import 'package:vitalapp/managers/interfaces/models/device.dart';
  7. import 'package:fis_common/logger/logger.dart';
  8. import 'state.dart';
  9. class DevicesSettingController extends FControllerBase {
  10. final state = DevicesSettingState();
  11. final _deviceManager = Get.find<IDeviceManager>();
  12. @override
  13. void onReady() {
  14. super.onReady();
  15. _loadData();
  16. }
  17. DeviceModel? getDataByType(String type) {
  18. final data = state.deviceList.firstWhereOrNull((e) => e.type == type);
  19. return data;
  20. }
  21. /// 绑定设备
  22. ///
  23. /// [deviceInfo] 设备信息
  24. void bindDevice(DeviceInfo deviceInfo) async {
  25. setBusy("正在绑定设备...");
  26. logger.i("正在绑定设备 ${deviceInfo.type}");
  27. final model = DeviceModel(
  28. bleName: deviceInfo.bleName,
  29. productName: deviceInfo.productName,
  30. mac: deviceInfo.mac,
  31. model: deviceInfo.model,
  32. type: deviceInfo.type,
  33. );
  34. await _deviceManager.addDevice(model);
  35. await _loadDeviceList();
  36. cancelBusy();
  37. }
  38. /// 解绑设备
  39. ///
  40. /// [type] 设备类型
  41. void unbindDevice(String type) async {
  42. setBusy("正在解除绑定...");
  43. logger.i("正在绑定设备 $type");
  44. await _deviceManager.removeDeviceByType(type);
  45. await _loadDeviceList();
  46. cancelBusy();
  47. }
  48. ///验证是否有权限搜索设备
  49. Future<void> initPermission() async {
  50. IPermissionManager permissionManager = Get.find<IPermissionManager>();
  51. await permissionManager.requestLocationPermission();
  52. await Future.delayed(const Duration(milliseconds: 100));
  53. await permissionManager.requestBluetoothConnectPermission();
  54. await Future.delayed(const Duration(milliseconds: 100));
  55. await permissionManager.requestBluetoothAdvertisePermission();
  56. await Future.delayed(const Duration(milliseconds: 100));
  57. await permissionManager.requestBluetoothScanPermission();
  58. }
  59. void _loadData() async {
  60. state.accessTypes = await _deviceManager.getAccessTypes();
  61. await _loadDeviceList();
  62. }
  63. Future<void> _loadDeviceList() async {
  64. state.deviceList = await _deviceManager.getDeviceList();
  65. }
  66. }