Browse Source

[fix]历史轨迹页-已选中轨迹点后,再次点击,未取消高亮显示

zk 4 months ago
parent
commit
6664476172

+ 9 - 5
lib/module/track/track_controller.dart

@@ -14,6 +14,7 @@ import 'package:location/handler/error_handler.dart';
 import 'package:location/resource/string.gen.dart';
 import 'package:permission_handler/permission_handler.dart';
 import 'package:sliding_sheet2/sliding_sheet2.dart';
+import '../../data/bean/track_daily_bean.dart';
 import '../../data/bean/user_info.dart';
 import '../../dialog/common_confirm_dialog_impl.dart';
 import '../../dialog/location_permission_dialog.dart';
@@ -52,6 +53,8 @@ class TrackController extends BaseController
 
   final RxDouble trackBottomHeight = RxDouble(330.w);
 
+  TrackDailyBean? selectedTrackDailyBean;
+
   final TrackRepository trackRepository;
   final FriendsRepository friendsRepository;
   final AccountRepository accountRepository;
@@ -94,6 +97,7 @@ class TrackController extends BaseController
       if (tab.indexIsChanging == false) {
         //控制请求当前页数据或者数据已有时跟换数据
         mapController.clear();
+        selectedTrackDailyBean = null;
         currentTrackDay.value = daysList[tab.index];
       }
     });
@@ -118,7 +122,7 @@ class TrackController extends BaseController
   }
 
   void showSelectMarker(List<LatLng> points, Marker selectMarker) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.updateOrAddMarker(selectMarker);
     mapController.moveToSuitableLocation(points, mapPadding: selectPadding);
   }
@@ -128,7 +132,7 @@ class TrackController extends BaseController
   }
 
   void showMovingTrack(List<LatLng> movingPoints) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.addPolyline(
         Polyline(
             lineId: Constants.traceSelectLineId,
@@ -138,7 +142,7 @@ class TrackController extends BaseController
   }
 
   void showTrackError(List<LatLng> errorPoints, Marker errorMarker) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     mapController.updateOrAddMarker(errorMarker);
     mapController.addPolyline(
         Polyline(
@@ -148,7 +152,7 @@ class TrackController extends BaseController
         mapPadding: mapPadding);
   }
 
-  void _clearSelectMapMarker() {
+  void clearSelectMapMarker() {
     mapController.removeMarker(Constants.mineLocationId);
     mapController.removePolyline(Constants.traceSelectLineId);
     mapController.removeMarker(Constants.tracePopupId);
@@ -192,7 +196,7 @@ class TrackController extends BaseController
   }
 
   void showMineLocationMarker(MapLocation location) {
-    _clearSelectMapMarker();
+    clearSelectMapMarker();
     Marker mineMarker = Marker(
         id: Constants.mineLocationId,
         latitude: location.latitude,

+ 37 - 30
lib/module/track/track_day_detail/track_day_detail_controller.dart

@@ -413,37 +413,44 @@ class TrackDayDetailController extends BaseController {
   }
 
   void onHistoryTrackItemClick(TrackDailyBean bean) {
-    if (bean.status == TrackStatus.stay) {
-      //停留状态
-      Marker selectMarker = Marker(
-        id: Constants.tracePopupId,
-        markerName: '',
-        latitude: bean.lat,
-        longitude: bean.lng,
-        markerType: MarkerType.tracePopupPoint,
-        tags: Popup(
-          title: bean.addr ?? '',
-          desc: TrackUtil.formatDurationFromMillis(bean.duration),
-        ),
-      );
-      trackController.showSelectMarker(points, selectMarker);
-    } else if (bean.status == TrackStatus.moving) {
-      final movingPoints =
-          TrackUtil.getTrackMovePoints(trackOriginPoints, bean.start, bean.end);
-      trackController.showMovingTrack(movingPoints);
-    } else if (bean.status == TrackStatus.error) {
-      final errorPoints =
-          TrackUtil.getTrackMovePoints(trackOriginPoints, bean.start, bean.end);
-      if (errorPoints.isEmpty) {
-        return;
-      }
-      Marker errorMarker = Marker(
-          id: Constants.traceErrorId,
+    if (trackController.selectedTrackDailyBean == null) {
+      if (bean.status == TrackStatus.stay) {
+        //停留状态
+        Marker selectMarker = Marker(
+          id: Constants.tracePopupId,
           markerName: '',
-          latitude: errorPoints.first.latitude,
-          longitude: errorPoints.first.longitude,
-          markerType: MarkerType.trackErrorPoint);
-      trackController.showTrackError(errorPoints, errorMarker);
+          latitude: bean.lat,
+          longitude: bean.lng,
+          markerType: MarkerType.tracePopupPoint,
+          tags: Popup(
+            title: bean.addr ?? '',
+            desc: TrackUtil.formatDurationFromMillis(bean.duration),
+          ),
+        );
+        trackController.showSelectMarker(points, selectMarker);
+      } else if (bean.status == TrackStatus.moving) {
+        final movingPoints = TrackUtil.getTrackMovePoints(
+            trackOriginPoints, bean.start, bean.end);
+        trackController.showMovingTrack(movingPoints);
+      } else if (bean.status == TrackStatus.error) {
+        final errorPoints = TrackUtil.getTrackMovePoints(
+            trackOriginPoints, bean.start, bean.end);
+        if (errorPoints.isEmpty) {
+          return;
+        }
+        Marker errorMarker = Marker(
+            id: Constants.traceErrorId,
+            markerName: '',
+            latitude: errorPoints.first.latitude,
+            longitude: errorPoints.first.longitude,
+            markerType: MarkerType.trackErrorPoint);
+        trackController.showTrackError(errorPoints, errorMarker);
+      }
+      trackController.selectedTrackDailyBean = bean;
+    } else {
+      //如果当前已经有选中的轨迹,则清除选中状态
+      trackController.clearSelectMapMarker();
+      trackController.selectedTrackDailyBean = null;
     }
   }
 

File diff suppressed because it is too large
+ 292 - 279
pubspec.lock