完成页面对接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

@@ -17,7 +17,9 @@ import 'package:maibu_satabot_v2/features/remote_control/domain/usecase/diff_ste
import 'package:shared_preferences/shared_preferences.dart';
import '../../features/auth/data/datasources/auth_http_datasource.dart';
import '../../features/auth/data/datasources/auth_tcp_datasource.dart';
import '../../features/auth/data/datasources/impl/auth_http_datasource_impl.dart';
import '../../features/auth/data/datasources/impl/auth_tcp_datasource_impl.dart';
import '../../features/auth/data/repositories/auth_repository_impl.dart';
import '../../features/auth/domain/repositories/auth_repository.dart';
import '../../features/auth/domain/usecases/login_usecase.dart';
@@ -41,6 +43,8 @@ import '../../features/devices/domain/usecases/get_work_record_usecase.dart';
import '../../features/devices/domain/usecases/route_planning_usecase.dart';
import '../../features/devices/domain/usecases/save_work_record_usecase.dart';
import '../../features/devices/domain/usecases/select_work_record_usecase.dart';
import '../../features/devices/domain/usecases/switch_device_usecase.dart';
import '../../features/devices/presentation/bloc/device_status_bloc.dart';
import '../../features/remote_control/presentation/bloc/remote_control_cubit.dart';
import '../app/app_user_cubit.dart';
import '../network/dio_client.dart';
@@ -59,7 +63,9 @@ Future<void> init() async {
sl.registerLazySingleton<Dio>(() => DioClient.create());
/// 1.1.2 TcpClient:TCP客户端
sl.registerLazySingleton(() => TcpClient());
sl.registerLazySingleton(() => TcpClient( sl<UserStorage>(),
getUserDeviceUseCase: sl<GetUserDeviceUseCase>(),
switchDeviceUseCase: sl<SwitchDeviceUseCase>(),));
/// 1.1.3 NetMessageDispatcher:消息调度器,并将 TcpClient 注入给它
sl.registerLazySingleton(() => NetMessageDispatcher(sl()));
@@ -83,7 +89,7 @@ Future<void> init() async {
() => AuthHttpDataSourceImpl(sl()),
);
sl.registerLazySingleton<DeviceHttpDatasource>(
() => DeviceHttpDatasourceImpl(sl()),
() => DeviceHttpDatasourceImpl(sl(), sl<UserStorage>()), //
);
/// 3. 仓库 (Repository)
@@ -126,7 +132,16 @@ Future<void> init() async {
sl.registerLazySingleton(() => UnbindDeviceUseCase(sl()));
sl.registerLazySingleton(() => UpdateDevicenameUsecase(sl()));
sl.registerLazySingleton<SaveWorkRecordUseCase>(() => SaveWorkRecordUseCase(sl<PathRepository>()));
sl.registerLazySingleton<SwitchDeviceUseCase>(() => SwitchDeviceUseCase(sl()));
sl.registerLazySingleton<AuthTcpDatasource>(
() => AuthTcpDatasourceImpl(
sl<TcpClient>(),
sl<UserStorage>(),
getUserDeviceUseCase: sl<GetUserDeviceUseCase>(),
switchDeviceUseCase: sl<SwitchDeviceUseCase>(),
),
);
/// 5. 状态管理 (Cubit/Bloc)
@@ -136,6 +151,11 @@ Future<void> init() async {
() => DevicesCubit(sl(), sl(), sl(), sl(), sl(), sl(), sl(), sl(), sl(),sl(),sl()),
);
sl.registerFactory(() => RemoteControlCubit(sl()));
/* // 工厂模式(留存,每次获取新实例)
sl.registerFactory(() => DeviceStatusBloc(sl<NetMessageDispatcher>()));
*/
//单例模式(全局共享一个实例)
sl.registerLazySingleton(() => DeviceStatusBloc(sl<NetMessageDispatcher>()));
/// . 路径生成
sl.registerLazySingleton<PathHttpDatasource>(
@@ -162,6 +182,7 @@ Future<void> init() async {
sl<TcpClient>(),
sl<AppUserCubit>(),
sl<NetMessageDispatcher>(),
sl<AuthTcpDatasource>(),
),
);