完成页面对接tcp推送的设备状态数据

完成页面测试解析tcp推送的设备状态数据的UI展示
This commit is contained in:
2026-03-03 19:34:17 +08:00
parent 0a3a062c04
commit 34b4c2bcbc
12 changed files with 676 additions and 230 deletions

View File

@@ -1,14 +1,25 @@
import 'package:dio/dio.dart';
import 'package:flutter/widgets.dart';
import 'package:maibu_satabot_v2/core/consts/http_api_consts.dart';
import 'package:maibu_satabot_v2/features/devices/data/datasources/device_http_datasource.dart';
import 'package:maibu_satabot_v2/features/devices/domain/entities/device_entity.dart';
import '../../../../../core/storage/user_storage.dart';
import '../../../domain/entities/device_location_entity.dart';
class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
final Dio dio;
final UserStorage _userStorage; // 🔥 新增字段
DeviceHttpDatasourceImpl(this.dio);
// 🔥 修改构造函数,注入 UserStorage
DeviceHttpDatasourceImpl(this.dio, this._userStorage);
// 🔥 辅助方法:获取 Token
Future<String?> _getToken() async {
final user = await _userStorage.getUser();
debugPrint('用户信息: $user') ;
return user?.token;
}
@override
Future<int> bindDevice(String deviceId, String deviceAlias) async {
@@ -31,9 +42,17 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
@override
Future<List<DeviceEntity>> getUserDevices(String username) async {
final token = await _getToken();
var response = await dio.get(
HttpApiConsts.getUserDevicesList,
queryParameters: {'tenantName': username},
options: Options(
headers: {
'Authorization': token != null ? 'Bearer $token' : '',
// 如果后端不需要 Bearer 前缀,直接写 token 即可
},
),
);
if (response.statusCode != 200) {
throw Exception('网络请求失败:${response.statusCode}');
@@ -58,9 +77,16 @@ class DeviceHttpDatasourceImpl implements DeviceHttpDatasource {
@override
Future<int> switchDevice(String platform, String deviceId) async {
final token = await _getToken();
var response = await dio.post(
HttpApiConsts.switchDevice,
data: {'platform': platform, 'deviceId': deviceId},
options: Options(
headers: {
'Authorization': token != null ? 'Bearer $token' : '',
// 如果后端不需要 Bearer 前缀,直接写 token 即可
},
),
);
if (response.statusCode != 200) {
throw Exception('网络请求失败:${response.statusCode}');