HarmonyOS 关于封装promptAction.openCustomDialog问题

想要在逻辑代码中封装一个通用的promptAction.openCustomDialog,但是好像不写在@Component文件下就会导致bind报错 请问有相关的封装的demo参考吗?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

参考下面demo:

index页面:

import { BusinessError } from '@ohos.base';
import { ComponentContent } from "@ohos.arkui.node";
import {Params,buildText} from '../common/dialog'
@Entry
@Component
struct Index {
  @State message: string = "hello"

  build() {
    Row() {
      Column() {
        Button("click me")
          .onClick(() => {

            let uiContext = this.getUIContext();
            let promptAction = uiContext.getPromptAction();
            let contentNode = new ComponentContent(uiContext, wrapBuilder(buildText),new Params("这是一个弹框"));
            try {
              promptAction.openCustomDialog(contentNode);
            } catch (error) {
              let message = (error as BusinessError).message;
              let code = (error as BusinessError).code;
              console.error(`OpenCustomDialog args error code is ${code}, message is ${message}`);
            };
          })
      }
      .width('100%')
      .height('100%')
    }
    .height('100%')
  }
}

dialog封装:

export class Params {
  text: string = ""
  constructor(text: string) {
    this.text = text;
  }
}

@Builder
export  function buildText(params: Params) {
  Column() {
    Text(params.text)
      .fontSize(50)
      .fontWeight(FontWeight.Bold)
      .margin({bottom: 36})
  }.backgroundColor('#FFF0F0F0').width('100%')
}

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-uicontext-V5#getpromptaction

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#opencustomdialog12

分享
微博
QQ
微信
回复
2天前
相关问题
promptAction.openCustomDialog 全局弹窗
504浏览 • 1回复 待解决
promptAction.openCustomDialog 自定义弹窗
366浏览 • 1回复 待解决