plugin_scanner_qr 0.1.0
plugin_scanner_qr: ^0.1.0 copied to clipboard
Plugin Flutter para leitura de QR Code no Android com suporte a modo único e modo contínuo, usando ML Kit e CameraX. Inclui debounce nativo, cooldown configurável e helper Dart de alto nível (Continuo [...]
plugin_scanner_qr #
Plugin Flutter para leitura de QR Code no Android usando ML Kit e CameraX. Suporta leitura única (abre uma Activity de câmera e retorna o valor) e leitura contínua (stream de leituras em tempo real, com debounce e cooldown nativos).
Plataformas: Android apenas.
Instalação #
dependencies:
plugin_scanner_qr: ^0.1.0
Permissões (Android) #
Adicione ao AndroidManifest.xml do seu app:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Uso rápido #
Leitura única #
import 'package:plugin_scanner_qr/plugin_scanner_qr.dart';
final plugin = PluginScannerQr();
final result = await plugin.scanQRCode();
print(result); // conteúdo do QR ou null se cancelado
Leitura contínua com ContinuousQrScanner (recomendado) #
import 'package:plugin_scanner_qr/plugin_scanner_qr.dart';
final scanner = ContinuousQrScanner(
options: ContinuousScanOptions(
cooldown: Duration(seconds: 2), // pausa automática após cada leitura
),
);
await scanner.start(); // solicita permissão e abre a câmera
scanner.scans.listen((QrScanResult result) {
print('Lido: ${result.value} às ${result.scannedAt}');
});
// Quando terminar:
await scanner.dispose();
Leitura contínua em baixo nível (controle total) #
// 1. Assine o stream ANTES de abrir a câmera
plugin.onBarcodeScanned.listen((result) {
print(result.value);
});
// 2. Abra a câmera
await plugin.startContinuousScan(
ContinuousScanOptions(
duplicateDebounce: Duration(milliseconds: 1500),
cooldown: Duration(seconds: 2),
),
);
// Controle manual:
await plugin.pauseScanning();
await plugin.resumeScanning();
await plugin.stopContinuousScan();
ContinuousScanOptions #
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
duplicateDebounce |
Duration |
1500 ms |
Suprime reemissões do mesmo valor no nativo |
cooldown |
Duration |
Duration.zero |
Pausa automática após cada leitura |
useFrontCamera |
bool |
false |
Câmera frontal |
orientation |
String |
'portrait' |
'portrait' ou 'landscape' |
enableTorch |
bool |
false |
Lanterna |
showNativeFeedback |
bool |
false |
Toasts nativos de debug |
ContinuousQrScanner #
| Membro | Descrição |
|---|---|
start() |
Solicita permissão e abre a câmera |
scans |
Stream<QrScanResult> com os resultados |
pause() |
Pausa temporariamente a detecção |
resume() |
Retoma após pausa |
toggleFlash() |
Liga/desliga a lanterna |
switchCamera() |
Alterna entre câmera frontal e traseira |
dispose() |
Encerra o scanner e fecha a câmera |
Leitura única com opções avançadas #
final result = await plugin.scanQRCodeWithOptions(
useFrontCamera: false,
orientation: 'portrait',
enableTorch: false,
enableAutoFocus: true,
zoomLevel: 0.0,
);
Utilitários #
await plugin.isCameraAvailable(); // bool
await plugin.isFrontCameraAvailable(); // bool
await plugin.requestCameraPermission(); // bool
Dependências nativas (Android) #
- CameraX (
androidx.camera:camera-*) - ML Kit Barcode Scanning (
com.google.mlkit:barcode-scanning)
Limitações conhecidas #
- Apenas Android. iOS, Web e Desktop não são suportados nesta versão.
- Os parâmetros
brightness,contrasteexposureCompensationdescanQRCodeWithOptionsainda não estão conectados à API nativa do CameraX.
Estrutura do projeto #
lib/
├── plugin_scanner_qr.dart # Fachada pública
├── plugin_scanner_qr_platform_interface.dart # Contrato da plataforma
├── plugin_scanner_qr_method_channel.dart # Implementação via channels
└── src/
├── continuous_scan_options.dart # Opções do modo contínuo
├── qr_scan_result.dart # Modelo de resultado
└── continuous_qr_scanner.dart # Helper de alto nível
android/
└── src/main/kotlin/com/example/plugin_scanner_qr/
├── PluginScannerQrPlugin.kt # Registro e method channel
└── MlKitScannerActivity.kt # Câmera, ML Kit, debounce/cooldown