barcode_qr_scanner

Flutter için barkod ve QR kod okuma paketi.

Özellikler

  • QR kod, EAN-13, EAN-8, Code 128, Code 39 ve daha fazla format
  • Canlı kamera önizlemesi
  • Flaş açma/kapama
  • Taramayı duraklatma ve devam ettirme
  • Tarama alanı overlay (köşe çerçeveli kare alan)
  • Çoklu tarama modu — aynı kodu tekrar okumayı engelleme
  • Android (ML Kit + CameraX) ve iOS (AVFoundation) desteği

Kurulum

dependencies:
  barcode_qr_scanner: ^0.2.3

Android

<uses-permission android:name="android.permission.CAMERA" />

Android 6+ için çalışma zamanında izin istemeniz gerekir:

import 'package:permission_handler/permission_handler.dart';

final status = await Permission.camera.request();
if (status.isGranted) {
  // CodeScannerView göster
}

iOS

<key>NSCameraUsageDescription</key>
<string>Barkod ve QR kod taramak için kamera erişimi gereklidir.</string>

Kullanım

import 'package:barcode_qr_scanner/barcode_qr_scanner.dart';

final controller = CodeScannerController();

CodeScannerView(
  controller: controller,
  onDetect: (ScanResult result) {
    print('Okunan: ${result.rawValue}');
    print('Format: ${result.format}');
  },
)

Tarama modları

Tek tarama (ScanMode.single) — varsayılan

İlk kod okunduğunda tarama otomatik duraklar. CodeScannerView varsayılan olarak bu modu kullanır.

CodeScannerView(
  scanMode: ScanMode.single,
  onDetect: (result) { ... },
)

Çoklu tarama (ScanMode.continuous)

Sürekli tarar. Aynı kodun tekrar tetiklenmesini filtreler.

CodeScannerView(
  scanMode: ScanMode.continuous,
  duplicateFilter: DuplicateFilter.session, // oturum boyunca bir kez
  onDetect: (result) { ... },
)

// veya süre bazlı filtre
CodeScannerView(
  duplicateFilter: DuplicateFilter.cooldown,
  duplicateCooldown: const Duration(seconds: 3),
)

Filtreyi sıfırlamak için:

controller.resetDuplicateFilter();

Overlay

CodeScannerView(showOverlay: false)

CodeScannerView(
  overlay: ScannerOverlay(
    scanAreaSize: 280,
    borderColor: Colors.greenAccent,
  ),
)

Controller

await controller.toggleTorch();
await controller.setTorch(true);
await controller.pause();
await controller.resume();
controller.resetDuplicateFilter();

Örnek uygulama

cd example
flutter run