优化和路径规划新适配
This commit is contained in:
@@ -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
Reference in New Issue
Block a user