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

Plugin Flutter para leitura de QR Code no Android usando ML Kit e CameraX. Oferece leitura única em tela cheia e leitura contínua com preview embutido na árvore de widgets (PlatformView), com debounce [...]

0.2.0 #

Preview embutido (PlatformView) #

  • QrScannerPreview + QrScannerController — a leitura contínua agora usa uma PlatformView embutida na árvore de widgets, em vez de uma Activity de tela cheia. Isso permite desenhar UI Flutter por cima do preview: overlay de status, botões, drawer e showDialog.
  • Renderização com PreviewView.ImplementationMode.COMPATIBLE (TextureView) e Texture Layer Hybrid Composition (initSurfaceAndroidView). hybridComposition: true disponível como alternativa.
  • Canais por instância (preview_$viewId), eliminando o EventSink estático. Eventos agora são Map com discriminador type (barcode/cameraOpened/error), em vez de String crua.
  • PreviewLifecycleOwner — cada preview tem seu próprio LifecycleRegistry, combinando intenção do Dart + foreground da Activity + view anexada. pauseScanning/resumeScanning não recriam mais as use cases do CameraX.

Correções #

  • Permissão de câmera não mente mais. requestCameraPermission() respondia true antes de o usuário decidir, e a Activity pedia permissão sem tratar onRequestPermissionsResult — resultado: tela preta permanente na primeira execução. Agora há RequestPermissionsResultListener e o Future só completa após a resposta real.
  • Novo hasCameraPermission() — consulta pura. O plugin não solicita permissão no caminho do preview, evitando Can request only one set of permissions at a time quando o app usa permission_handler.
  • Vazamentos corrigidos: cliente do ML Kit era criado a cada switchCamera() e nunca fechado; cameraExecutor só era desligado no modo contínuo (sair pelo botão voltar vazava); scanEventSink estático e singleton MlKitScannerActivity.current removidos; listeners de Activity agora são desregistrados no detach.
  • unbind(preview, analysis) em vez de unbindAll() — ProcessCameraProvider é singleton de processo e unbindAll() derrubaria outros consumidores de câmera.
  • uses-feature android:required passou a false — como true, era mesclado no app consumidor e o removia da Play Store para aparelhos sem câmera.
  • Removido o atributo package do manifest da lib (obsoleto no AGP 8) e o bloco dependencies {} que estava aninhado dentro de android {}.
  • Removidas ~200 linhas de pipeline CameraX morto (startCamera, bindCameraUseCases, stopScanner, QRCodeAnalyzer) que nunca eram alcançadas.
  • Corrigido o teste de widget do example, que procurava um texto inexistente.

Breaking changes #

  • startContinuousScan responde UNSUPPORTED. Use QrScannerPreview com QrScannerController. ContinuousQrScanner e os métodos globais do modo contínuo seguem disponíveis, marcados @Deprecated; os globais delegam para a última QrScannerPreview criada.
  • requestCameraPermission() marcado @Deprecated — prefira gerenciar a permissão no app.
  • CameraX 1.3.1 → 1.3.4. Requer ndkVersion = "27.0.12077973" no app consumidor.

0.1.0 #

  • Leitura contínua oficializada — API pública completa com startContinuousScan, pauseScanning, resumeScanning e stopContinuousScan.
  • Novos modelos Dart — ContinuousScanOptions (debounce, cooldown, câmera, orientação, torch) e QrScanResult (valor + timestamp).
  • ContinuousQrScanner — helper de alto nível que encapsula permissão, abertura da câmera e ciclo de vida do stream.
  • Debounce nativo — o Android suprime reemissões do mesmo QR dentro do intervalo duplicateDebounce (padrão 1500 ms), sem round-trip para o Flutter.
  • Cooldown nativo — após cada leitura, o scanner pausa automaticamente pelo tempo configurado em cooldown (padrão Duration.zero = sem pausa).
  • Toasts removidos por padrão — feedback visual de "Leitura pausada/retomada" agora só é exibido quando showNativeFeedback: true.
  • PluginScannerQr refatorada como fachada fina; toda lógica de canal delegada à PluginScannerQrPlatform.
  • onBarcodeScanned — stream oficial tipado como Stream<QrScanResult> na platform interface e no method channel.
  • Example atualizado para usar ContinuousQrScanner com slider de cooldown configurável.

0.0.1 #

  • Versão inicial com leitura única (scanQRCode, scanQRCodeWithOptions).
0
likes
0
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

Plugin Flutter para leitura de QR Code no Android usando ML Kit e CameraX. Oferece leitura única em tela cheia e leitura contínua com preview embutido na árvore de widgets (PlatformView), com debounce e cooldown nativos.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on plugin_scanner_qr

Packages that implement plugin_scanner_qr