flutter_sdk/lib/src/device/starcloud_device_service.dart
2026-08-20 09:25:05 +08:00

174 lines
4.1 KiB
Dart
Executable File

import 'package:starcloud/blue/blue_manage.dart';
import 'package:starcloud/blue/blue_read_write.dart';
import 'package:starcloud/entity/star_cloud_lock_list.dart';
import 'package:starcloud/sdk/business/sdk_common.dart';
import 'package:starcloud/starcloud.dart';
import '../core/callback_bridge.dart';
class StarCloudDeviceService {
StarCloudDeviceService();
Future<dynamic> _fetchWrapper(int? cloudUid) {
return SDKCommon.instance.fetchStarCloudUser(cloudUid);
}
Future<List<StarCloudScanResult>> scanDeviceList({
int timeout = 3600,
bool notPaired = true,
void Function(List<StarCloudScanResult> devices)? onScan,
}) {
return CallbackBridge.fromCallback<List<StarCloudScanResult>>(
executor: (onSuccess, onError) {
StarCloudSDK.instance.scanDeviceList(
timeout: timeout,
notPaired: notPaired,
scanType: ScanType.lock,
onScan: (list) {
onScan?.call(list);
onSuccess(list);
},
);
},
);
}
Future<void> stopScan() {
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
StarCloudSDK.instance.stopScan(onError: onError).then((_) => onSuccess());
},
);
}
Future<void> disconnect() {
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
StarCloudSDK.instance.disconnect().then((_) => onSuccess());
},
);
}
Future<StarCloudLock> pairDevice({
required StarCloudScanResult scanResult,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromCallback<StarCloudLock>(
executor: (onSuccess, onError) {
wrapper.pairDevice(
scanResult: scanResult,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<StarCloudLockList> getDeviceList({
required int pageNo,
required int pageSize,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromCallback<StarCloudLockList>(
executor: (onSuccess, onError) {
wrapper.getDeviceList(
pageNo: pageNo,
pageSize: pageSize,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<StarCloudLock> getDevice({
required int lockId,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromCallback<StarCloudLock>(
executor: (onSuccess, onError) {
wrapper.getDevice(
lockId: lockId,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<void> openLock({
required int lockId,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
wrapper.openLock(
lockId: lockId,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<void> closeLock({
required int lockId,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
wrapper.closeLock(
lockId: lockId,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<void> resetLock({
required int lockId,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
wrapper.resetLock(
lockId: lockId,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
Future<void> updateAdminKeyboardPwd({
required int lockId,
required String pwd,
int? cloudUid,
}) async {
final wrapper = await _fetchWrapper(cloudUid);
return CallbackBridge.fromVoidCallback(
executor: (onSuccess, onError) {
wrapper.updateAdminKeyboardPwd(
lockId: lockId,
pwd: pwd,
onSuccess: onSuccess,
onError: onError,
);
},
);
}
}