Files
patrickandClaude Sonnet 5 d8d2816758
CI / backend-tests (push) Successful in 1m1s
CI / frontend-build (push) Successful in 21s
Karte 10: Kamera-Scan in Flutter-App (Objekt-Code, Scan-First-Einstieg)
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
2026-09-04 17:57:18 +02:00

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),
);
}
}