如何在一个class里面promptAction.openCustomDialog 一个自定义弹窗,并动态刷新弹窗里的数据
比如弹窗的标题是一个倒计时的时间,每秒变化等
import { LifecycleBridgeHandler, ResponseModel } from "@sinochemit/web_bridge";
import promptAction from '@ohos.promptAction'
interface Param {
open: string | boolean;
duration: number | string;
style:number | string
}
export struct PopViewManager{
@Builder customDialogComponent(customDialogComponentId:number) {
Column() {
Text('弹窗').fontSize(30)
Row({ space: 50 }) {
Button("确认").onClick(() => {
promptAction.closeCustomDialog(globalThis.customDialogComponentId)
})
Button("取消").onClick(() => {
promptAction.closeCustomDialog(globalThis.customDialogComponentId)
})
}
}.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween)
}
build() {
}
}
export class OpenRecordVoiceBridgeHandler extends LifecycleBridgeHandler {
static readonly HANDLER_NAME = "openRecordVoice";
public customDialogComponentId: number = 0
jsCallNative(data: string, callback: Function): void {
const param: Param = JSON.parse(data);
if (!param) {
callback(ResponseModel.fail("参数错误"));
return;
}
let duration = 60;
let style = 0;
let play = param.open
duration = Number(param.duration)
style = Number(param.style)
if (play === "false" || play === false){
}
promptAction.openCustomDialog({
builder: () => {
new PopViewManager().customDialogComponent(this.customDialogComponentId)
},
onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
console.info("reason" + JSON.stringify(dismissDialogAction.reason))
console.log("dialog onWillDismiss")
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
dismissDialogAction.dismiss()
}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
dismissDialogAction.dismiss()
}
}
}).then((dialogId: number) => {
globalThis.customDialogComponentId = dialogId
this.customDialogComponentId = dialogId
})
}
}
动态刷新的弹窗只有这个uicontext的opencustomdialog支持
参考链接:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md\#opencustomdialog12
参考代码如下