flutter_barcode_scanner_update 2.3.2
flutter_barcode_scanner_update: ^2.3.2 copied to clipboard
A plugin for barcode scanning support on Android and iOS. Supports barcodes, QR codes, etc.
📷 flutter_barcode_scanner_update #
🎯 Versión personalizada y mantenida del plugin flutter_barcode_scanner, con escaneo de códigos QR y códigos de barras en Android e iOS sobre ML Kit (CameraX en Android, AVFoundation en iOS).
🚀 Características #
- Escaneo único (
scanBarcode,scanBarcodeWithOptions) y continuo (getBarcodeStreamReceiver,getBarcodeStreamWithOptions) - Filtro de simbologías: acepta solo los formatos que te interesan
- Resultado enriquecido: valor, valor visible, formato detectado y tipo de contenido
- Color de línea, texto del botón cancelar y visibilidad del flash configurables
- Overlay con ventana adaptada al modo (QR o código de barras)
- Linterna, escaneo en horizontal y cierre controlado del escaneo continuo
🛠️ Instalación #
dependencies:
flutter_barcode_scanner_update:
git:
url: https://github.com/angelicadelacruzgonzalez/flutter_barcode_scanner.git
📱 Configuración por plataforma #
✅ Android #
No requiere configuración adicional. Requiere minSdk 21 o superior.
🍎 iOS (mínimo iOS 13) #
- Abre
ios/Runner.xcworkspaceen Xcode - En Runner → Build Settings, deja
iOS Deployment Targeten 13.0 ySwift Versionen 5.0 - Ejecuta
pod installdentro de/ios
Agrega el permiso de cámara en ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>Necesitamos acceso a la cámara para escanear códigos.</string>
🧪 Uso #
Escaneo único (API clásica) #
import 'package:flutter_barcode_scanner_update/flutter_barcode_scanner_update.dart';
final String barcode = await FlutterBarcodeScanner.scanBarcode(
'#3D8BEF', // Color de la línea del escáner
'Cancelar', // Texto del botón cancelar
false, // Mostrar ícono de flash
ScanMode.QR, // QR, BARCODE o DEFAULT
);
Devuelve '-1' si el usuario cancela.
Escaneo único con opciones y resultado enriquecido #
final BarcodeResult? result = await FlutterBarcodeScanner.scanBarcodeWithOptions(
const ScannerOptions(
lineColor: '#3D8BEF',
cancelButtonText: 'Cancelar',
isShowFlashIcon: true,
scanMode: ScanMode.BARCODE,
// Solo simbologías de retail: un QR de marketing en cuadro se ignora
formats: [
BarcodeFormat.ean13,
BarcodeFormat.ean8,
BarcodeFormat.code128,
BarcodeFormat.upcA,
],
),
);
if (result == null) {
// El usuario canceló
} else {
print(result.rawValue); // Contenido crudo
print(result.displayValue); // Contenido legible, si ML Kit lo produce
print(result.format?.name); // ean13, qrCode, ...
print(result.valueType.name); // product, url, wifi, text, ...
}
Escaneo continuo #
final subscription = FlutterBarcodeScanner.getBarcodeStreamWithOptions(
const ScannerOptions(
lineColor: '#3D8BEF',
cancelButtonText: 'Cancelar',
scanMode: ScanMode.QR,
formats: [BarcodeFormat.qrCode],
),
).listen((barcode) {
print('Código escaneado: $barcode');
});
// La cámara se cierra al cancelar la suscripción
await subscription.cancel();
// O explícitamente:
await FlutterBarcodeScanner.stopBarcodeStream();
📋 Formatos disponibles #
BarcodeFormat.code128, code39, code93, codabar, dataMatrix, ean13, ean8, itf, qrCode, upcA, upcE, pdf417, aztec.
Una lista vacía en ScannerOptions.formats acepta todos los formatos.
ℹ️ Notas #
scanModesolo controla la forma de la ventana del overlay. Para restringir qué se detecta usaformats.ScanMode.DEFAULTmuestra la ventana cuadrada, igual queScanMode.QR.- Si el usuario cancela:
scanBarcodedevuelve'-1'yscanBarcodeWithOptionsdevuelvenull. - Los fallos reales (permiso de cámara denegado, error nativo) lanzan
PlatformException, para poder distinguirlos de una cancelación:
try {
final result = await FlutterBarcodeScanner.scanBarcodeWithOptions(options);
} on PlatformException catch (e) {
// e.code: PERMISSION_DENIED | NO_ACTIVITY | ALREADY_RUNNING | NO_ROOT
}
- En escaneo continuo, un mismo código no se reemite durante ~1,5 s para evitar duplicados por frame.
🤝 Contribuciones #
¿Te gustaría colaborar? Abre un issue o PR para sugerencias, mejoras o correcciones.
📬 Contacto #
Hecho con ❤️ por Angélica de la Cruz González Email: angelicadelacruzgonzalez@gmail.com