103 lines
3.1 KiB
Dart
103 lines
3.1 KiB
Dart
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 = <String, dynamic>{}.obs;
|
|
final lockSettingMap = <String, dynamic>{}.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();
|
|
},
|
|
);
|
|
}
|
|
}
|