plugin_scanner_qr 0.1.0 copy "plugin_scanner_qr: ^0.1.0" to clipboard
plugin_scanner_qr: ^0.1.0 copied to clipboard

PlatformAndroid

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, contrast e exposureCompensation de scanQRCodeWithOptions ainda 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
0
likes
140
points
79
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

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 (ContinuousQrScanner).

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on plugin_scanner_qr

Packages that implement plugin_scanner_qr