路径规划修复
This commit is contained in:
@@ -9,6 +9,7 @@ import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:geolocator/geolocator.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:latlong2/latlong.dart';
|
||||
@@ -46,6 +47,7 @@ import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import '../path_list_pages.dart';
|
||||
import 'package:maibu_satabot_v2/core/logging/i_logger_service.dart';
|
||||
|
||||
// 定义轨迹点类型(经纬度)
|
||||
typedef PlotPoint = LatLng;
|
||||
@@ -92,6 +94,8 @@ class MapPageEnterprise extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
final ILoggerService _logger = GetIt.I<ILoggerService>();
|
||||
|
||||
final _dispatcher = sl<NetMessageDispatcher>();
|
||||
bool _isRefreshing = false; // 新增:页面刷新状态标志
|
||||
bool _isVideoDialogOpen = false; // 控制视频弹窗显示
|
||||
@@ -270,6 +274,8 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
// 新增:加载本地存储数据方法
|
||||
Future<void> _loadSavedData() async {
|
||||
try {
|
||||
_traceManager.setMode(TPMode.LOCATION);
|
||||
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final workStatusStr = prefs.getString(kSavedWorkStatus);
|
||||
if (workStatusStr != null) {
|
||||
@@ -929,9 +935,12 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
// ========== 新增:页面刷新初始化方法 ==========
|
||||
Future<void> _handleRefresh() async {
|
||||
if (_workStatus != WorkStatus.idle) {
|
||||
_showPageToast(message: "请先停止作业再刷新页面哦!", type: ToastType.warn);
|
||||
return;
|
||||
_stopWork();
|
||||
}
|
||||
//if (_workStatus != WorkStatus.idle) {
|
||||
// _showPageToast(message: "请先停止作业再刷新页面哦!", type: ToastType.warn);
|
||||
// return;
|
||||
//}
|
||||
_cancelAllToast();
|
||||
if (_isRefreshing) return;
|
||||
|
||||
@@ -1026,7 +1035,6 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
_workStatus = WorkStatus.idle;
|
||||
isStartWork = false;
|
||||
isStopWork = false;
|
||||
_mapCenter = _getDefaultValidCenter();
|
||||
|
||||
// 轨迹管理器重置
|
||||
_traceManager.reset();
|
||||
@@ -1407,6 +1415,8 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
_traceManager.upsert(_currentWgsLatLng as PlotPoint, TPAction.UPDATE);
|
||||
tracePoint = _traceManager.getTracePoint();
|
||||
gctracePoint = batchWgs84ToGcj02(tracePoint!);
|
||||
_logger.log("[转换后gctracePoint]: $gctracePoint");
|
||||
_logger.log("[当前轨迹模式]:${_traceManager.getMode()}"); // 这里必须加 ()
|
||||
|
||||
//_currentLatLng = gcjPoint; // ✅ 状态变量在setState内更新
|
||||
if (_isValidLatLng(gcjPoint.latitude, gcjPoint.longitude)) {
|
||||
@@ -1753,6 +1763,8 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
}
|
||||
|
||||
void _stopWork() async {
|
||||
_logger.log('按下停止按钮');
|
||||
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
isStartWork = false; // 🔥 关键:停止作业标志
|
||||
@@ -1761,6 +1773,10 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
_showControlModeWarn = false;
|
||||
isStopWork = true; //已经点击过停止
|
||||
isreceiveFirstCompletePoint = false;
|
||||
_traceManager.setMode(TPMode.LOCATION);
|
||||
_traceManager.reset();
|
||||
tracePoint = [];
|
||||
gctracePoint = [];
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1769,10 +1785,6 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
|
||||
_saveDataToLocal(); // 🔥 保存暂停状态
|
||||
_showPageToast(message: "作业已停止", type: ToastType.error);
|
||||
_traceManager.setMode(TPMode.LOCATION);
|
||||
_traceManager.reset();
|
||||
tracePoint = [];
|
||||
gctracePoint = [];
|
||||
}
|
||||
|
||||
/// 继续作业
|
||||
@@ -2336,8 +2348,10 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
if (arriLatitude != null && arriLongitude != null) {
|
||||
targetLatLng = LatLng(arriLatitude, arriLongitude);
|
||||
if (__isValidLatLng(targetLatLng)) {
|
||||
debugPrint("${targetLatLng}收到完成点arriLatitude");
|
||||
if (!isreceiveFirstCompletePoint) {
|
||||
//debugPrint("${targetLatLng}收到完成点arriLatitude");
|
||||
if (!isreceiveFirstCompletePoint && isStartWork && _workStatus == WorkStatus.working) {
|
||||
debugPrint("收到完成点arriLatitude");
|
||||
|
||||
_traceManager.setMode(TPMode.NAVIGATION);
|
||||
isreceiveFirstCompletePoint = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user