usb_state.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/architecture/utils/confirm_box.dart';
  5. import 'package:vitalapp/components/alert_dialog.dart';
  6. class UsbState {
  7. final EventChannel _eventChannel =
  8. EventChannel('com.vinno.vitalapp/usb_events');
  9. void startListening() {
  10. _eventChannel.receiveBroadcastStream().listen(
  11. (dynamic event) {
  12. // 这里我们期望event是一个Map,包含USB设备的信息
  13. Map<dynamic, dynamic> usbEvent = event as Map<dynamic, dynamic>;
  14. print('USB Event: $usbEvent');
  15. String action = usbEvent['action'] ?? 'unknown';
  16. String name = usbEvent['name'] ?? 'unknown';
  17. String type = usbEvent['type'] ?? 'unknown';
  18. if (action == 'attached') {
  19. print('USB device attached: Name - $name, Type - $type');
  20. alertReboot();
  21. // USB设备已连接,可以根据需要处理
  22. } else if (action == 'detached') {
  23. print('USB device detached: Name - $name, Type - $type');
  24. alertReboot();
  25. // USB设备已断开,可以根据需要处理
  26. }
  27. },
  28. onError: (dynamic error) {
  29. print('USB Event Error: $error');
  30. },
  31. );
  32. }
  33. void alertReboot() {
  34. ConfirmBox.showMultiLines(
  35. contents: ["检测到 USB 硬件发生变化", "(为保证程序正常运行,建议重启设备)"],
  36. width: 500,
  37. showCancel: false,
  38. );
  39. // Get.dialog(
  40. // VAlertDialog(
  41. // title: "提示",
  42. // width: 420,
  43. // content: Container(
  44. // height: 32,
  45. // padding: const EdgeInsets.symmetric(horizontal: 24),
  46. // alignment: Alignment.center,
  47. // child: const Text(
  48. // "检测到 USB 硬件发生变化,为保证程序正常运行,建议重启设备",
  49. // style: TextStyle(fontSize: 20),
  50. // ),
  51. // ),
  52. // showCancel: false,
  53. // onConfirm: () async {
  54. // Get.back();
  55. // },
  56. // ),
  57. // );
  58. }
  59. }