1.二维码组件 QRCode
@CustomDialog
export struct ShareDialog {@Prop item: QuestionDetail as QuestionDetailcontroller: CustomDialogControllerQRCode(this.item.id).width(160).height(160)
}
2.扫码跳转
前置知识:
- Scan Kit 提供默认界面扫码能力。
- canIUse 当前提供了ArkTS API和Native API用于帮助判断某个API是否可以使用。
实现步骤:
- 绑定扫码按钮点击提供处理方法,需要判断登录状态
- 使用
scanBarcode.startScanForResult
唤起扫码界面进行扫码 - 得到扫码结果,加载详情数据,跳转到详情页面,不需要在加载数据
async scanQuestionCode() {if (canIUse('SystemCapability.Multimedia.Scan.ScanBarcode')) {const result = await scanBarcode.startScanForResult(getContext(this))if (result.originalValue) {try {const item = await http.request<QuestionDetail>({ url: `question/${result.originalValue}` })router.pushUrl({url: 'pages/QuestionPage',params: {item,list: [item]}})} catch (e) {promptAction.showToast({ message: '二维码失效' })}}}}