ui(plotting): décalage visuel de l'impact lors du glisser pour éviter de le cacher avec le doigt

This commit is contained in:
qguillaume
2026-05-26 23:23:45 +02:00
parent 814f778e6c
commit 622f2936de

View File

@@ -507,14 +507,19 @@ class _AnalysisScreenContentState extends State<_AnalysisScreenContent> {
} }
}, },
// 3. GLISSER : On déplace l'impact verrouillé en temps réel sous le doigt // 3. GLISSER : On déplace l'impact verrouillé en temps réel avec un décalage visuel
onLongPressMoveUpdate: (LongPressMoveUpdateDetails details) { onLongPressMoveUpdate: (LongPressMoveUpdateDetails details) {
if (_movingShotId == null) return; if (_movingShotId == null) return;
final RenderBox? box = _imageKey.currentContext?.findRenderObject() as RenderBox?; final RenderBox? box = _imageKey.currentContext?.findRenderObject() as RenderBox?;
if (box == null) return; if (box == null) return;
final localOffset = box.globalToLocal(details.globalPosition); // CORRECTION : On applique un décalage de pixels (Offset) vers le haut et la gauche
// -25 pixels sur l'axe X (vers la gauche) et -35 pixels sur l'axe Y (vers le haut)
// pour que l'impact sorte de dessous la pulpe du doigt !
final adjustedGlobalPosition = details.globalPosition + const Offset(-25, -35);
final localOffset = box.globalToLocal(adjustedGlobalPosition);
// Calcul des coordonnées relatives bridées entre 0.0 et 1.0 (pour pas sortir de la photo) // Calcul des coordonnées relatives bridées entre 0.0 et 1.0 (pour pas sortir de la photo)
final relX = (localOffset.dx / box.size.width).clamp(0.0, 1.0); final relX = (localOffset.dx / box.size.width).clamp(0.0, 1.0);