Descripción
Actualmente la app solo permite ingresar datos de facturas/direcciones Lightning mediante dos vías:
- Escaneo por cámara — usando
mobile_scanner en QRScannerWidget (lib/widgets/qr_scanner_widget.dart)
- Pegado desde clipboard — texto plano en
SendScreen._pasteFromClipboard() (lib/screens/10send_screen.dart:66)
Sin embargo, es frecuente que los usuarios reciban capturas de pantalla o códigos QR guardados en la galería del dispositivo. Esta funcionalidad es un estándar en otras wallets Lightning (Phoenix, Breez, Zeus) y mejora significativamente la UX al eliminar la necesidad de usar un segundo dispositivo o hacer pantalla dividida.
Solución propuesta
Usar la API existente de mobile_scanner v5.2.3 (ya incluido en pubspec.yaml) que expone el método:
Future<BarcodeCapture?> MobileScannerController.analyzeImage(String path)
Esto permite decodificar un código QR desde un archivo de imagen sin añadir dependencias extra de QR decoding.
Dependencia a añadir
| Paquete |
Propósito |
image_picker |
Seleccionar imágenes desde la galería del dispositivo |
Flujo
- Añadir botón "Pegar desde galería" (icono de galería/imagen) en la UI del scanner
- Al pulsarlo, invocar
ImagePicker().pickImage(source: ImageSource.gallery)
- Tomar el
path del archivo seleccionado
- Instanciar
MobileScannerController y llamar analyzeImage(path)
- Procesar el
BarcodeCapture resultante con el mismo flujo que el escaneo por cámara
Archivos a modificar
| Archivo |
Cambio |
pubspec.yaml |
Añadir image_picker como dependencia |
lib/widgets/qr_scanner_widget.dart |
Añadir botón "Galería" en el área de acciones (junto a flash/switch cámara) + lógica de analyzeImage |
lib/screens/10send_screen.dart |
Opcional: añadir acceso directo desde los botones de acción |
lib/screens/voucher_scan_screen.dart |
Opcional: añadir acceso directo |
Criterios de aceptación
Descripción
Actualmente la app solo permite ingresar datos de facturas/direcciones Lightning mediante dos vías:
mobile_scannerenQRScannerWidget(lib/widgets/qr_scanner_widget.dart)SendScreen._pasteFromClipboard()(lib/screens/10send_screen.dart:66)Sin embargo, es frecuente que los usuarios reciban capturas de pantalla o códigos QR guardados en la galería del dispositivo. Esta funcionalidad es un estándar en otras wallets Lightning (Phoenix, Breez, Zeus) y mejora significativamente la UX al eliminar la necesidad de usar un segundo dispositivo o hacer pantalla dividida.
Solución propuesta
Usar la API existente de
mobile_scannerv5.2.3 (ya incluido enpubspec.yaml) que expone el método:Esto permite decodificar un código QR desde un archivo de imagen sin añadir dependencias extra de QR decoding.
Dependencia a añadir
image_pickerFlujo
ImagePicker().pickImage(source: ImageSource.gallery)pathdel archivo seleccionadoMobileScannerControllery llamaranalyzeImage(path)BarcodeCaptureresultante con el mismo flujo que el escaneo por cámaraArchivos a modificar
pubspec.yamlimage_pickercomo dependencialib/widgets/qr_scanner_widget.dartanalyzeImagelib/screens/10send_screen.dartlib/screens/voucher_scan_screen.dartCriterios de aceptación