From c4880ccb6856f2ffc0545014935ca9cdce5297e0 Mon Sep 17 00:00:00 2001 From: qguillaume Date: Tue, 16 Jun 2026 11:29:08 +0200 Subject: [PATCH] fix: cadre de centrage au ratio de la photo + bouton calibration Valider --- lib/features/analysis/analysis_screen.dart | 2 +- lib/features/crop/crop_screen.dart | 31 +++++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/features/analysis/analysis_screen.dart b/lib/features/analysis/analysis_screen.dart index aec18c81..d5134ed3 100644 --- a/lib/features/analysis/analysis_screen.dart +++ b/lib/features/analysis/analysis_screen.dart @@ -268,7 +268,7 @@ class _AnalysisScreenContentState extends State<_AnalysisScreenContent> { _openImpactEditor(context.read()); }, child: const Text( - 'TERMINER', + 'VALIDER', style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, diff --git a/lib/features/crop/crop_screen.dart b/lib/features/crop/crop_screen.dart index c6368e8e..cabcb378 100644 --- a/lib/features/crop/crop_screen.dart +++ b/lib/features/crop/crop_screen.dart @@ -101,17 +101,28 @@ class _CropScreenState extends State { ? const Center(child: CircularProgressIndicator(color: Color(0xFF1A73E8))) : Column( children: [ - // Zone interactive de crop + // Zone interactive de crop. Le cadre épouse le ratio réel de la photo + // (AspectRatio) → la photo le remplit bord à bord, sans bande noire de + // letterbox. La fenêtre de visée carrée reste centrée à l'intérieur. Expanded( - child: Container( - margin: const EdgeInsets.all(20), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - border: Border.all(color: Colors.white10), - ), - child: ClipRRect( - borderRadius: BorderRadius.circular(12), - child: _imageLoaded ? _buildInteractiveCrop() : const Center(child: CircularProgressIndicator()), + child: Padding( + padding: const EdgeInsets.all(20), + child: Center( + child: AspectRatio( + aspectRatio: (_imageSize != null && _imageSize!.height > 0) + ? _imageSize!.width / _imageSize!.height + : 1.0, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.white10), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: _imageLoaded ? _buildInteractiveCrop() : const Center(child: CircularProgressIndicator()), + ), + ), + ), ), ), ),