ScannerScreen auf mobile_scanner, Treffer springt direkt ins KontrollScreen, sonst Fallback ins bestehende Suchfeld. Kamera-Berechtigung (Android Manifest/ iOS Info.plist) im README dokumentiert, da android/ios-Ordner generiert und nicht im Repo sind. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
34 lines
1.0 KiB
Dart
34 lines
1.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:mobile_scanner/mobile_scanner.dart';
|
|
|
|
/// Kamera-Scan (Karte 10): Vollbild-Scanner, gibt den ersten erkannten
|
|
/// Code128-Wert per Navigator.pop zurück. Kein Auto-Close bei fehlgeschlagenem
|
|
/// Decode-Versuch nötig - mobile_scanner meldet nur echte Treffer.
|
|
class ScannerScreen extends StatefulWidget {
|
|
const ScannerScreen({super.key});
|
|
|
|
@override
|
|
State<ScannerScreen> createState() => _ScannerScreenState();
|
|
}
|
|
|
|
class _ScannerScreenState extends State<ScannerScreen> {
|
|
bool _bereitsErkannt = false;
|
|
|
|
void _onDetect(BarcodeCapture capture) {
|
|
if (_bereitsErkannt) return;
|
|
if (capture.barcodes.isEmpty) return;
|
|
final wert = capture.barcodes.first.rawValue;
|
|
if (wert == null || wert.isEmpty) return;
|
|
_bereitsErkannt = true;
|
|
Navigator.of(context).pop(wert);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('Code scannen')),
|
|
body: MobileScanner(onDetect: _onDetect),
|
|
);
|
|
}
|
|
}
|