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
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user