HarmonyOS 鸿蒙Next 如下代码显示对话框报错

发布于 1周前 作者 wuwangju 来自 鸿蒙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() }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

2 回复
看您提供的保存信息 missing [@Provide](/user/Provide) property with name pageInfo. Fail to resolve [@Consume](/user/Consume)(pageInfo). 

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

message:[@Component](/user/Component) 'CompD'[9] missing [@Provide](/user/Provide) property with name name.

          Fail to resolve [@Consume](/user/Consume)(name).

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

[@Component](/user/Component)

struct CompD {

  @Consume name: string;

  build() {

    Column() {

      Text(‘D’)

    Text(this.name)

    }

  }

}

@Component

struct CompB {

  build() {

    Column() {

      Text(‘B’)

      CompD()

    }

  }

}

@Entry

@Component

struct CompA {

  // @Provide name: string = ‘aaaa’

  build() {

    Column() {

      CompB()

    }

  }

}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

针对您提到的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 。希望这些方向能帮助您找到问题的根源并解决它。

回到顶部