From 942daeffa0e8c1a273f3cbb2550d1e0a4ef5bbe4 Mon Sep 17 00:00:00 2001 From: zyc <1439655764@qq.com> Date: Thu, 12 Feb 2026 10:02:56 +0800 Subject: [PATCH] fix login --- .../data/datasources/device_remote_data_source.dart | 8 ++++---- .../device/data/repositories/device_repository_impl.dart | 2 +- .../lib/features/device/domain/entities/device.g.dart | 6 +++--- .../device/domain/repositories/device_repository.dart | 2 +- .../presentation/controllers/device_controller.dart | 5 ++--- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/airhub_app/lib/features/device/data/datasources/device_remote_data_source.dart b/airhub_app/lib/features/device/data/datasources/device_remote_data_source.dart index 95bed06..d5b99a7 100644 --- a/airhub_app/lib/features/device/data/datasources/device_remote_data_source.dart +++ b/airhub_app/lib/features/device/data/datasources/device_remote_data_source.dart @@ -12,8 +12,8 @@ abstract class DeviceRemoteDataSource { /// POST /devices/verify/ Future> verifyDevice(String sn); - /// POST /devices/bind/ - Future bindDevice(String sn, {int? spiritId}); + /// POST /devices/bind/ — 返回绑定 ID (int) + Future bindDevice(String sn, {int? spiritId}); /// GET /devices/my_devices/ Future> getMyDevices(); @@ -61,11 +61,11 @@ class DeviceRemoteDataSourceImpl implements DeviceRemoteDataSource { } @override - Future bindDevice(String sn, {int? spiritId}) async { + Future bindDevice(String sn, {int? spiritId}) async { final body = {'sn': sn}; if (spiritId != null) body['spirit_id'] = spiritId; final data = await _apiClient.post('/devices/bind/', data: body); - return UserDevice.fromJson(data as Map); + return data as int; } @override diff --git a/airhub_app/lib/features/device/data/repositories/device_repository_impl.dart b/airhub_app/lib/features/device/data/repositories/device_repository_impl.dart index 368d52c..8d646bd 100644 --- a/airhub_app/lib/features/device/data/repositories/device_repository_impl.dart +++ b/airhub_app/lib/features/device/data/repositories/device_repository_impl.dart @@ -45,7 +45,7 @@ class DeviceRepositoryImpl implements DeviceRepository { } @override - Future> bindDevice( + Future> bindDevice( String sn, { int? spiritId, }) async { diff --git a/airhub_app/lib/features/device/domain/entities/device.g.dart b/airhub_app/lib/features/device/domain/entities/device.g.dart index 733476b..efe2721 100644 --- a/airhub_app/lib/features/device/domain/entities/device.g.dart +++ b/airhub_app/lib/features/device/domain/entities/device.g.dart @@ -30,9 +30,9 @@ Map _$DeviceTypeToJson(_DeviceType instance) => _DeviceInfo _$DeviceInfoFromJson(Map json) => _DeviceInfo( id: (json['id'] as num).toInt(), sn: json['sn'] as String, - deviceType: json['device_type'] == null - ? null - : DeviceType.fromJson(json['device_type'] as Map), + deviceType: (json['device_type'] is Map) + ? DeviceType.fromJson(json['device_type'] as Map) + : null, deviceTypeInfo: json['device_type_info'] == null ? null : DeviceType.fromJson(json['device_type_info'] as Map), diff --git a/airhub_app/lib/features/device/domain/repositories/device_repository.dart b/airhub_app/lib/features/device/domain/repositories/device_repository.dart index 663446d..9775b1c 100644 --- a/airhub_app/lib/features/device/domain/repositories/device_repository.dart +++ b/airhub_app/lib/features/device/domain/repositories/device_repository.dart @@ -6,7 +6,7 @@ import '../entities/device_detail.dart'; abstract class DeviceRepository { Future>> queryByMac(String mac); Future>> verifyDevice(String sn); - Future> bindDevice(String sn, {int? spiritId}); + Future> bindDevice(String sn, {int? spiritId}); Future>> getMyDevices(); Future> getDeviceDetail(int userDeviceId); Future> unbindDevice(int userDeviceId); diff --git a/airhub_app/lib/features/device/presentation/controllers/device_controller.dart b/airhub_app/lib/features/device/presentation/controllers/device_controller.dart index 1d8c2df..0f03c29 100644 --- a/airhub_app/lib/features/device/presentation/controllers/device_controller.dart +++ b/airhub_app/lib/features/device/presentation/controllers/device_controller.dart @@ -23,9 +23,8 @@ class DeviceController extends _$DeviceController { final result = await repository.bindDevice(sn, spiritId: spiritId); return result.fold( (failure) => false, - (userDevice) { - final current = state.value ?? []; - state = AsyncData([...current, userDevice]); + (bindingId) { + ref.invalidateSelf(); return true; }, );