diff --git a/lib/core/widgets/qr_upload_dialog.dart b/lib/core/widgets/qr_upload_dialog.dart index 65d37ee..aa4e327 100644 --- a/lib/core/widgets/qr_upload_dialog.dart +++ b/lib/core/widgets/qr_upload_dialog.dart @@ -48,7 +48,6 @@ class QrUploadDialog extends StatelessWidget { style: TextStyle(fontSize: 14, color: Colors.grey), ), const SizedBox(height: 24), - // IL CUORE DELLA MAGIA Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( diff --git a/lib/core/widgets/shared_forms/mobile_upload_screen.dart b/lib/core/widgets/shared_forms/mobile_upload_screen.dart index 6f448fc..7408d6c 100644 --- a/lib/core/widgets/shared_forms/mobile_upload_screen.dart +++ b/lib/core/widgets/shared_forms/mobile_upload_screen.dart @@ -275,25 +275,15 @@ class _SharedMobileUploadScreenState extends State { // --- LOGICA FOTOCAMERA E LIBRERIA --- Future _handleCamera() async { - final picker = ImagePicker(); - // Apriamo la fotocamera. Qui NON mettiamo il loader perché - // l'utente sta guardando l'app nativa del telefono. - final photo = await picker.pickImage( - source: ImageSource.camera, - imageQuality: 80, - ); + setState(() => _isProcessingLocal = true); + await Future.delayed(const Duration(milliseconds: 100)); - if (photo != null) { - // 1. Accendiamo l'overlay "Elaborazione foto..." - setState(() => _isProcessingLocal = true); + try { + final picker = ImagePicker(); + // NIENTE PIÙ IMAGE QUALITY! + final photo = await picker.pickImage(source: ImageSource.camera); - // 2. TRUCCO NINJA: Lasciamo "respirare" Flutter per 50ms - // in modo che faccia in tempo a disegnare l'overlay grigio sullo schermo - // prima che readAsBytes() blocchi il processore! - await Future.delayed(const Duration(milliseconds: 50)); - - try { - // 3. Ora facciamo il lavoro pesante + if (photo != null) { final photoBytes = await photo.readAsBytes(); final photoSize = await photo.length(); @@ -307,10 +297,9 @@ class _SharedMobileUploadScreenState extends State { setState(() { _stagedFiles.add(platformFile); }); - } finally { - // 4. Spegniamo l'overlay, sia che vada a buon fine, sia che ci sia un errore - setState(() => _isProcessingLocal = false); } + } finally { + setState(() => _isProcessingLocal = false); } }