解决了渲染TCP推送数据,在切换功能后不稳定问题,保证了APP端的稳定性。

This commit is contained in:
2026-04-22 15:16:30 +08:00
parent 0402d2f3f5
commit e8a23559d4
9 changed files with 179 additions and 85 deletions

View File

@@ -15,7 +15,8 @@ import '../../../../core/di/injection.dart';
import '../../../../core/network/net_message_dispatcher.dart';
import '../../../../core/network/protocol_decoder.dart';
import '../../../devices/presentation/bloc/devices_cubit.dart';
import '../../../devices/presentation/bloc/device_status_cubit.dart';
import '../../../devices/presentation/bloc/device_status_bloc.dart';
import '../../../devices/presentation/bloc/device_status_event.dart';
import '../../../devices/presentation/bloc/device_status_state.dart';
// 配置:数据超时时间(5秒)
@@ -64,8 +65,9 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
// 🔥 注册静态实例
_instance = this;
debugPrint('🚀 [RunningStatusPage] initState 被调用');
// 🔥 简化:直接重置状态,不需要重新初始化监听器
context.read<DeviceStatusCubit>().reset();
// 🔥 使用 DeviceStatusBloc
// context.read<DeviceStatusBloc>().add(DeviceStatusReset());
// 🔥 关键:立即启动超时计时器,如果5秒内没收到数据就显示"暂无数据"
_startDataTimeoutTimer();
@@ -841,7 +843,7 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
body: CustomScrollView(
physics: const BouncingScrollPhysics(),
slivers: [
BlocBuilder<DeviceStatusCubit, DeviceStatusState>(
BlocBuilder<DeviceStatusBloc, DeviceStatusState>(
builder: (context, state) {
// 新增:超时状态下显示--
String qual = _isDataTimeout ? '--' : '--';
@@ -949,7 +951,7 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
),
SliverToBoxAdapter(
child: BlocBuilder<DeviceStatusCubit, DeviceStatusState>(
child: BlocBuilder<DeviceStatusBloc, DeviceStatusState>(
builder: (context, state) {
debugPrint('🎨 [UI-Build] BlocBuilder 重建!当前状态类型:${state.runtimeType}');

View File

@@ -7,7 +7,7 @@ import 'package:maibu_satabot_v2/features/home/presentation/pages/productDesc.da
import '../../../../core/di/injection.dart';
import '../../../../core/router/route_paths.dart';
import '../../../devices/presentation/bloc/device_status_cubit.dart';
import '../../../devices/presentation/bloc/device_status_bloc.dart';
import '../../../remote_control/presentation/bloc/remote_control_cubit.dart';
import '../../../remote_control/presentation/pages/remote_control_page.dart';
import '../pages/route_plan_page.dart';
@@ -31,9 +31,8 @@ class HomeRoutes {
GoRoute(path: RoutePaths.usage, builder: (context, state) => const ManualPage()),
GoRoute(
path: RoutePaths.runningStatus,
// builder: (context, state) => const RunningStatusPage(),
builder: (context, state) => BlocProvider(
create: (_) => DeviceStatusCubit(sl()), // 使用简化版 Cubit
builder: (context, state) => BlocProvider.value(
value: sl<DeviceStatusBloc>(), // 使用全局单例 DeviceStatusBloc,确保数据流不中断
child: const RunningStatusPage(),
),
),