HarmonyOS 鸿蒙Next showSetSecurityCodeDialog 显示对话框报错

发布于 1周前 作者 wuwangju 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如下代码显示对话框报错
通过showSetSecurityCodeDialog显示对话框,有时候会报错,是什么问题
 


@Component 'SetSecurityCodeDialog'[2489] missing @Provide property with name pageInfo. Fail to resolve @Consume(pageInfo).
at initializeConsume (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js)
at SetSecurityCodeDialog (src/main/ets/dialog/SetSecurityCodeDialog.js)
at builder (src/main/ets/dialog/SetSecurityCodeDialog.js)



/**
* 设置安全码对话框
*/
import { CarControlModulePages } from '../config/CarControlModulePages'
import { Callback } from '@kit.BasicServicesKit'
import { RouterTypeHandler } from 'constants'

@CustomDialog
export struct SetSecurityCodeDialog {
c?: CustomDialogController
cancelCallback?:()=>void=()=>{}
build() {
Column() {
Stack() {
Text("设置安全码")
.width("100%")
.textAlign(TextAlign.Center)
.fontSize("16vp")
.fontColor("#181818")
.margin({ top: "16vp" })
Image($r("app.media.ic_close")).onClick(() => {
controller?.close()
if (this.cancelCallback!=null&&this.cancelCallback!=null) {
this?.cancelCallback()
}
}).width("28vp").height("28vp").margin({ top: "14vp", right: "12vp" })
}.width("100%").height("56vp").alignContent(Alignment.TopEnd)

Text("为保障您的车辆使用安全请先设置安全码")
.width("100%")
.textAlign(TextAlign.Center)
.fontSize(14)
.fontColor("#1818181")
.margin({ top: 18 })

Text("去设置")
.height(32)
.width(90)
.fontColor("#FBFBFB")
.fontSize(14)
.onClick(() => {
controller?.close()
RouterTypeHandler.pageStack?.pushPathByName(CarControlModulePages.SECURITYCODESMSCODE_PAGE, null)
})
.borderRadius(2)
.backgroundColor("#181818")
.margin({ top: 16 })
.textAlign(TextAlign.Center)

}
.width("100%")
.height(230)
.backgroundColor("#FFFFFF")
.borderRadius({
topLeft: 8,
topRight: 8
})
.alignItems(HorizontalAlign.Center)
}
}


let controller: CustomDialogController | null = null

export function _showSetSecurityCodeDialog(call?:Callback<boolean>) {
if (controller != null) {
controller.close()
}

controller = new CustomDialogController({
builder: SetSecurityCodeDialog({cancelCallback:()=>{
if (call!=null&&call!=undefined) {
call(true)
}
}}),
customStyle: true,
alignment: DialogAlignment.Bottom
})
controller.open()

}

export function showSetSecurityCodeDialog(_this: object,callBack?:Callback<boolean>) {
_showSetSecurityCodeDialog.bind(_this)(callBack)
}

export function dismissSetSecurityCodeDialog() {
controller?.close()
}

更多关于HarmonyOS 鸿蒙Next showSetSecurityCodeDialog 显示对话框报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

看您提供的保存信息 missing @Provide property with name pageInfo. Fail to resolve @Consume(pageInfo). 

可能是其他应用的组件X引用了组件B,但是组件B中没有定义name,组件D中有name,这时通过组件X启动组件B和组件D,会导致组件D中报以下错误

message:@Component ‘CompD’[9] missing @Provide property with name name.

          Fail to resolve @Consume(name).

建议排查使用@Provide@Consume的相关变量,排查是不是所有涉及@Provide@Consume的组件,都有对应的初始定义。

[@Component](/user/Component)

struct CompD {

  [@Consume](/user/Consume) name: string;

  build() {

    Column() {

      Text('D')

    Text(this.name)

    }

  }

}

[@Component](/user/Component)

struct CompB {

  build() {

    Column() {

      Text('B')

      CompD()

    }

  }

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct CompA {

  // [@Provide](/user/Provide) name: string = 'aaaa'

  build() {

    Column() {

      CompB()

    }

  }

}

更多关于HarmonyOS 鸿蒙Next showSetSecurityCodeDialog 显示对话框报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提到的HarmonyOS鸿蒙Next系统中代码显示对话框报错的问题,这里有几个可能的排查方向,但无法直接提供具体代码修正建议,因为缺少具体的错误信息和代码上下文。

  1. 检查权限:确保您的应用已正确声明并获取了显示对话框所需的权限。

  2. 对话框创建:验证对话框的创建过程是否符合HarmonyOS的API规范。特别是对话框的上下文、布局文件以及初始化参数是否正确。

  3. 生命周期管理:检查对话框是否在Activity或Ability的生命周期中正确管理。例如,避免在Activity销毁后还尝试显示对话框。

  4. 异常捕获:在代码中添加异常捕获逻辑,打印出具体的错误信息,这有助于精确定位问题所在。

  5. API版本兼容性:确认您使用的API与鸿蒙系统的版本是否兼容。有时候,新版本的操作系统会更改或废弃一些旧的API。

  6. 文档和资源:查阅最新的HarmonyOS开发文档和社区资源,看看是否有其他开发者遇到并解决了类似的问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。希望这些方向能帮助您找到问题的根源并解决它。

回到顶部