import 'package:get/get.dart'; import 'package:starcloud/entity/star_cloud_lock_list.dart'; import 'package:starcloud/sdk/sdk_lock_operate_extension.dart'; import 'package:starcloud/sdk/starcloud.dart'; import 'package:starwork_flutter/base/app_logger.dart'; import 'package:starwork_flutter/base/base_controller.dart'; import 'package:starwork_flutter/common/constant/app_view_parameter_keys.dart'; import 'package:starwork_flutter/common/events/refresh_device_list_event.dart'; import 'package:starwork_flutter/common/utils/event_bus_util.dart'; import 'package:starwork_flutter/views/main/main_controller.dart'; class RemoveDeviceController extends BaseController { // 选中的设备 RxList selectedDevices = [].obs; RxList deviceList = [].obs; final mainController = Get.find(); final currentProgress = ''.obs; // 显示进度文本,如 "正在重置设备 1/3" @override void onInit() { deviceList.value = (Get.arguments?[AppViewParameterKeys.deviceList] as List?) ?? []; super.onInit(); } // 判断某个设备是否被选中 bool isSelected(StarCloudLock device) { AppLogger.highlight('${selectedDevices.contains(device)}'); return selectedDevices.contains(device); } // 切换选中状态 void toggleDevice(StarCloudLock device) { if (isSelected(device)) { selectedDevices.remove(device); } else { selectedDevices.add(device); } } // 全选 void selectAll(List allDevices) { selectedDevices.assignAll(allDevices); } // 清空选择 void clearSelection() { selectedDevices.clear(); } // 是否全选 bool isAllSelected(List allDevices) { return allDevices.isNotEmpty && selectedDevices.length == allDevices.length; } // 删除设备 void removeDevice(RxList selectedDevices) async { showLoading(); var teamInfo = mainController.selectedTeam.value; var teamCloudInfo = teamInfo.teamCloudInfo; if (teamCloudInfo == null) { showToast('没找到对应的星云账户信息'); hideLoading(); return; } if (selectedDevices.isEmpty) { showToast('没有选择要重置的设备'); hideLoading(); return; } bool allSuccess = true; // 标记是否全部成功 for (int i = 0; i < selectedDevices.length; i++) { final device = selectedDevices[i]; try { await StarCloudSDK.instance.resetLock( lockId: device.lockId, cloudUid: teamCloudInfo.uid, onSuccess: () { // 可以在这里做点成功反馈(如打印日志) }, onError: (err) { allSuccess = false; // 标记为非全成功 }, ); } catch (e) { allSuccess = false; } } // === 所有设备处理完成后判断 === if (allSuccess) { Future.delayed(1.seconds, () { EventBusUtil().instance.fire(RefreshDeviceListEvent()); Get.back(); }); } else { Future.delayed(2.seconds, () {}); } hideLoading(); } }