HarmonyOS中如何在类中调用全局的弹窗
2025-06-14 15:39:33
108次阅读
0个评论
HarmonyOS中如何在类中调用全局的弹窗
前言
相信大家在开发中自定义弹窗都是用的@CustomDialog在每个页面都写一大堆初始化代码,并且在类中使用也是相当难调用,今天给老铁们分享使用promptAction.openCustomDialog去在类中调用全局的弹窗。
如何使用?
第一步
- 先到EntryAbility这个文件存取上下文(必要条件)
onWindowStageCreate(windowStage: window.WindowStage): void {
windowStage.loadContent('pages/Index', (err) => {
window.getLastWindow(this.context).then((data: window.Window) => {
let uiContext = data.getUIContext();
AppStorage.setOrCreate<UIContext>('UIContext', uiContext);
});
});
}
-
写一个Builder(样式自定义)
export class Params {
text: ResourceStr = ""
constructor(text: ResourceStr) {
this.text = text;
}
}
@Builder
export function testTextBuilder(params: Params) {
Column() {
Text(params.text)
.textAlign(TextAlign.Center)
.fontSize(20)
.borderRadius(6)
.backgroundColor('rgba(24, 25, 26, 0.85)')
.fontColor($r('sys.color.comp_background_list_card'))
.padding(16)
}
}
- 万事俱备只欠东风(定义全局类)
export class DialogModel {
static showDialog(message: string) {
if (message != '') {
let timeId: number = -1
// 获取上下文
let uiContext = AppStorage.get('UIContext') as UIContext
let promptAction = uiContext.getPromptAction();
let contentNode = new ComponentContent(uiContext, wrapBuilder(testTextBuilder), new Params(message));
promptAction.openCustomDialog(contentNode, {
isModal: false,
onWillAppear: () => {
timeId = setTimeout(() => {
promptAction.closeCustomDialog(contentNode)
}, 2000)
},
onDidDisappear: () => {
clearTimeout(timeId)
},
keyboardAvoidMode: KeyboardAvoidMode.NONE,
showInSubWindow: true,
})
}
}
}
- 齐活开整
@Entry
@Component
struct Index {
build() {
Column() {
Button('点我,我就给你个弹窗')
.onClick(() => {
DialogModel.showDialog('我就给你了')
})
}
}
}
看看效果
不足
- 返回的时候会关闭弹窗(如果为吐司不需要关)
- 连续点击会一直弹出(有的需求需要打开一个弹窗关闭上一个弹窗)
- 返回的时候不想关闭弹窗,但是想要退出页面栈
00
- 0回答
- 0粉丝
- 0关注
相关话题
- 如何在Page中获取WindowStage实例
- 鸿蒙开发:父组件如何调用子组件中的方法?
- HarmonyOS NEXT父组件如何调用子组件的方法?
- 如何调用系统拍照并获取图片
- uni-app/uniappx 中调用鸿蒙原生扫码能力的实践
- OpenHarmony: 如何删除Record中的元素
- 应用中的“复制功能”如何实现##HarmonyOS应用开发##
- 如何在长按手势回调方法里获取手指触摸点的坐标
- 【HarmonyOS 5】鸿蒙中如何使用MQTT
- OpenHarmony: 如何设置不保留最近任务列表中的快照
- 鸿蒙开发:wrapBuilder来封装全局@Builder
- HarmonyOS如何实现Text根据对应的字符串改变Text中字符指定颜色?
- 《HarmonyOSNext弹窗:ComponentContent动态玩转企业级弹窗》
- HarmonyOS Next 弹窗系列教程(3)
- HarmonyOS Next 弹窗系列教程(4)