Flutter中如何将条形码扫描数据传入TextField?
解决方案
你只需要替换原代码中的setState代码块,直接通过TextEditingController的text属性将扫描结果赋值给输入框即可,同时建议过滤掉用户取消扫描的情况(FlutterBarcodeScanner取消扫描时会返回'-1'):
修改后的完整扫描函数代码:
Future<void> scanBarcodeNormal() async { String barcodeScanRes; try { barcodeScanRes = await FlutterBarcodeScanner.scanBarcode('#ff6666', 'Cancel', true, ScanMode.BARCODE); print(barcodeScanRes); } on PlatformException { barcodeScanRes = 'Cihazınız barkod okumayı desteklemiyor.'; } if (!mounted) return; // 替换原来的setState代码 // 过滤取消操作,避免把'-1'写入输入框 if (barcodeScanRes != '-1') { searchController.text = barcodeScanRes; } }
另外要确保你的TextField已经正确绑定了searchController:
TextField( controller: searchController, decoration: const InputDecoration( hintText: '扫描条形码自动填充', ), )
原理说明:TextEditingController是Flutter中控件和输入框数据绑定的核心,直接修改它的text属性会自动触发TextField的内容更新,不需要额外调用setState。
内容的提问来源于stack exchange,提问作者Dawntree
相关产品推荐
相关产品推荐

