import 'package:get/get.dart'; import 'package:get/get_rx/get_rx.dart'; import 'package:starcloud/entity/star_cloud_lock_list.dart'; import 'package:starcloud/net/entity/api_response.dart'; import 'package:starcloud/sdk/entity/entity_sender/enable_lock_settings.dart'; import 'package:starcloud/sdk/sdk_lock_setting_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/constant/lock_function_number.dart'; import 'package:starwork_flutter/common/events/refresh_device_list_event.dart'; import 'package:starwork_flutter/common/utils/event_bus_util.dart'; class DeviceSettingController extends BaseController { // 锁信息 StarCloudLock? lockInfo; // 锁名称 RxString lockName = ''.obs; // 定义一个可观察的 Map final lockFeatureMap = {}.obs; final lockSettingMap = {}.obs; @override void onReady() { super.onReady(); // 读取参数 final args = Get.arguments; if (args != null && args.containsKey(AppViewParameterKeys.lockInfo)) { final json = args[AppViewParameterKeys.lockInfo]; lockInfo = StarCloudLock.fromJson(json, 0); lockName.value = lockInfo?.lockName ?? ''; } _readLockSetting(); _readLockFeature(); } // 开启/关闭远程开锁 void enableRemoteUnlock(bool value) async { showLoading(); await StarCloudSDK.instance.enableLockSettings( lockId: lockInfo?.lockId ?? 0, lockSettings: EnableLockSettings( featureBit: LockFunctionNumber.remoteUnlocking, featureEnable: value, parameter: null, ), onSuccess: () { _readLockSetting(); hideLoading(); }, onError: (err) { AppLogger.error('开启/关闭远程开锁失败:${err}'); hideLoading(); }, ); } void _readLockSetting() async { showLoading(); await StarCloudSDK.instance.readLockSetting( lockId: lockInfo?.lockId ?? 0, onSuccess: (response) { if (response is ApiResponse) { final resultData = response as ApiResponse; if (resultData.isSuccess) { lockSettingMap.value = resultData.data['lockSetting']; } } hideLoading(); }, onError: (err) { AppLogger.error('读取锁设置失败:${err}'); hideLoading(); }, ); } void _readLockFeature() async { showLoading(); await StarCloudSDK.instance.readLockFeature( lockId: lockInfo?.lockId ?? 0, onSuccess: (response) { if (response is ApiResponse) { final resultData = response as ApiResponse; if (resultData.isSuccess) { lockFeatureMap.value = resultData.data['lockFeature']; } } hideLoading(); }, onError: (err) { AppLogger.error('读取锁设置失败:${err}'); hideLoading(); }, ); } }