From 0ed7c86921bafc9e54f4ba13cf0bc1e9a38440b2 Mon Sep 17 00:00:00 2001 From: Reinis Sprogis Date: Mon, 21 Jul 2025 14:55:39 +0300 Subject: [PATCH 1/2] fix: Added value key and RepaintBoundary to preserve Marker state. --- lib/src/layer/marker_layer/marker_layer.dart | 31 ++++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/lib/src/layer/marker_layer/marker_layer.dart b/lib/src/layer/marker_layer/marker_layer.dart index fe4693d46..71fde439c 100644 --- a/lib/src/layer/marker_layer/marker_layer.dart +++ b/lib/src/layer/marker_layer/marker_layer.dart @@ -72,23 +72,22 @@ class MarkerLayer extends StatelessWidget { // Shift original coordinate along worlds, then move into relative // to origin space - final shiftedLocalPoint = - Offset(shiftedX, pxPoint.dy) - map.pixelOrigin; - + final shiftedLocalPoint = Offset(shiftedX, pxPoint.dy) - map.pixelOrigin; + + final markerKey = m.key ?? '${m.point.latitude}:${m.point.longitude}'; return Positioned( - key: m.key, - width: m.width, - height: m.height, - left: shiftedLocalPoint.dx - right, - top: shiftedLocalPoint.dy - bottom, - child: (m.rotate ?? rotate) - ? Transform.rotate( - angle: -map.rotationRad, - alignment: (m.alignment ?? alignment) * -1, - child: m.child, - ) - : m.child, - ); + key: ValueKey('$markerKey@$shiftedX'), + width: m.width, + height: m.height, + left: shiftedLocalPoint.dx - right, + top: shiftedLocalPoint.dy - bottom, + child: RepaintBoundary(child: (m.rotate ?? rotate) + ? Transform.rotate( + angle: -map.rotationRad, + alignment: (m.alignment ?? alignment) * -1, + child: m.child, + ) + : m.child)); } // Create marker in main world, unless culled From a9f6442ea2a0ede6d9d6de6e36f98ade34af7576 Mon Sep 17 00:00:00 2001 From: Reinis Sprogis Date: Wed, 23 Jul 2025 00:19:52 +0300 Subject: [PATCH 2/2] Using ObjectKey if key not provided. --- lib/src/layer/marker_layer/marker_layer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/layer/marker_layer/marker_layer.dart b/lib/src/layer/marker_layer/marker_layer.dart index 71fde439c..68ce0d7cd 100644 --- a/lib/src/layer/marker_layer/marker_layer.dart +++ b/lib/src/layer/marker_layer/marker_layer.dart @@ -74,7 +74,7 @@ class MarkerLayer extends StatelessWidget { // to origin space final shiftedLocalPoint = Offset(shiftedX, pxPoint.dy) - map.pixelOrigin; - final markerKey = m.key ?? '${m.point.latitude}:${m.point.longitude}'; + final markerKey = m.key ?? ObjectKey(m); return Positioned( key: ValueKey('$markerKey@$shiftedX'), width: m.width,