import 'package:chicken_farm/routes/app_routes.dart'; import 'package:flutter/material.dart'; import 'package:chicken_farm/components/vb_app_bar.dart'; import 'package:chicken_farm/components/qr_scanner.dart'; import 'package:go_router/go_router.dart'; class SampleQueryPage extends StatefulWidget { const SampleQueryPage({super.key}); @override State createState() => _SampleQueryPageState(); } const String _qrCodePrefix = 'vb@sample@/sample/'; class _SampleQueryPageState extends State { Future _parseSampleQRCode(String rawContent) async { try { // 替换掉 _qrCodePrefix final content = rawContent.replaceFirst(_qrCodePrefix, ''); if (content.isNotEmpty) { // 检查是否能转成int,能转就返回conetent,不能返回null return int.parse(content).toString(); } return null; } catch (e) { return null; } } void _handleSampleScan(String scannedContent) async { // 跳转到样品详情页面,传递id参数为scannedContent if (mounted) { context.pushNamed( AppRouteNames.sampleDetail, pathParameters: {'id': scannedContent}, ); } } @override Widget build(BuildContext context) { return Scaffold( appBar: const VberAppBar(title: '样品查询', showLeftButton: true), body: QRScannerComponent( startWithString: _qrCodePrefix, onScanCallback: _handleSampleScan, invalidQRMessage: '样品二维码无效!', qrCodeParser: _parseSampleQRCode, ), ); } }