@g9tm/lynxcontrols-条码
G9BarcodeTextEntry: 有扫描仪的文本字段( MAUI) G9MAUIControls.Barcode) (中文(简体) ). 摄像头从来不是这个包裹的:
控件 onScanRequested 并自行驱动扫描仪,或提供 services.scanner 和田地驱动它。 取决于
@g9tm/lynxcontrols-foundation 财务报告和审定财务报表 @g9tm/lynxcontrols 只导入; 导入 @g9tm/lynxcontrols 从来没有拉它进来。 移徙表:
docs/migration/Barcode.Controls.md。 。 。 .
import { G9BarcodeTextEntry, type G9BarcodeTextEntryHandle } from '@g9tm/lynxcontrols-barcode';
// A: you own the camera (MAUI ScanRequested)
const field = useRef<G9BarcodeTextEntryHandle | null>(null);
<G9BarcodeTextEntry
ref={field}
label="Sample code"
acceptedCodeRegex="^\\d{3}/\\d{3}/\\d{6}$"
onScanRequested={async () => {
field.current?.startScan();
try {
field.current?.acceptScannedCode(await myScanner.scanOnce());
} finally {
field.current?.stopScan();
}
}}
onAccepted={(code) => model.add(code)}
/>
// B: services.scanner ({ isAvailable, scan }) does it: a tap scans; 'multiple' stays armed until cancelled
<G9BarcodeTextEntry label="Scanned items" scanMode="multiple" isEditable scanFormats={['code128']} />
行为
- 国家
idle→scanBusy(spinner,只读,scanBusyText(作为占位符)accepted(成功大纲, (a) 或error(错误大纲,一. 状态被你自己分层hasError, (中文(简体) ),readOnly, (中文(简体) ),useStatusColor, (中文(简体) ),statusColor, (中文(简体) ),placeholder财务报告和审定财务报表trailingIcon当国家不再需要他们的时候 他们就会回来 键入后 a 结果返回字段idle。 。 。 .scanState是可控的. - 接受这个建议.
acceptedCodeRegex使用图案字符串, aRegExp或一个函数。 变形图案或 丢弃函数拒绝代码, 而不是扔入扫描流 。 拒绝超过4096个字符的代码 在任何图案运行前(MAUI用一个250ms regex 超时,JavaScript无法做到)将匹配绑定.'single'替换文本;'multiple'附录", code"。 。 。 .onAccepted永远不要对输入的文本起火. - 扫描仪服务. 无
onScanRequested,扫描图标仅在services.scanner.isAvailable()解决了真理。 扫描显示中止信号 :stopScan()并解除它,而忽略后果;cancelled返回到idle, (中文(简体) ),denied失败变成error(不及格也入于诊断. - 布局图. 扫描图标被固定在物理右侧,文本被固定在RTL页(条码为 左到右符号字符串; 标签和大纲遵循页面方向.
真正的扫描仪集成是设备检查( S)plan/execution/Native-Validation-Pending.md N-045 (英语).