| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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<SampleQueryPage> createState() => _SampleQueryPageState();
- }
- const String _qrCodePrefix = 'vb@sample@/sample/';
- class _SampleQueryPageState extends State<SampleQueryPage> {
- Future<String?> _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,
- ),
- );
- }
- }
|