优化和路径规划新适配

This commit is contained in:
2026-07-11 16:46:53 +08:00
parent 2124f3bc02
commit 1a4d0aedfd
43 changed files with 2454 additions and 685 deletions

View File

@@ -63,6 +63,9 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
Timer? _dataTimeoutTimer;
bool _isDataTimeout = false; // 标记是否数据超时
// 🔥 标记是否已从 bloc 缓存初始化过图表数据,防止 BlocBuilder 重复追加
bool _hasSeededFromCache = false;
@override
void initState() {
super.initState();
@@ -77,6 +80,22 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
// 🔥 新增:监听应用生命周期
WidgetsBinding.instance.addObserver(this);
// 🔥 关键修复:页面进入时立即用 bloc 当前缓存数据初始化图表
// 不用等下一次 TCP 推送才显示数据
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
final blocState = context.read<DeviceStatusBloc>().state;
if (blocState is DeviceStatusUpdated) {
debugPrint('🚀 [RunningStatusPage] bloc已有缓存数据,立即初始化图表');
_hasSeededFromCache = true;
_appendChartData(blocState);
_startDataTimeoutTimer(); // 重置超时计时器
if (_isDataTimeout) {
setState(() => _isDataTimeout = false);
}
}
});
}
@override
@@ -1000,7 +1019,13 @@ class _RunningStatusPageState extends State<RunningStatusPage> with WidgetsBindi
if (!_isDataTimeout && state is DeviceStatusUpdated) {
debugPrint('📈 [UI] 检测到 Updated 状态,准备追加图表数据');
_appendChartData(state);
// 🔥 如果 initState 已从缓存初始化过,跳过 BlocBuilder 首次触发
if (_hasSeededFromCache) {
_hasSeededFromCache = false; // 只跳过第一次
debugPrint('📈 [UI] 跳过首次 BlocBuilder 追加(已由 initState 缓存初始化)');
} else {
_appendChartData(state);
}
// 🔥 关键:收到数据后立即重置超时计时器
_startDataTimeoutTimer();
// 如果之前是超时状态,现在恢复

File diff suppressed because it is too large Load Diff