目前弹框暂时都是挂载在组件下,暂无其他实现方式。参考以下demo:1、新建GlobalContext.ets工具类export class GlobalContext { private constructor() { } private static instance: GlobalContext; private _objects = new Map<string, Object>(); public static getContext(): GlobalContext { if (!GlobalContext.instance) { GlobalContext.instance = new GlobalContext(); } return GlobalContext.instance; } getObject(value: string): Object | undefined { return this._objects.get(value); } setObject(key: string, objectClass: Object): void { this._objects.set(key, objectClass); } }2.新建DialogUtils.ets工具类import { promptAction } from '@kit.ArkUI' import { GlobalContext } from './GlobalContext' let customDialogId: number = 0 @Builder export function customDialogBuilder(content: String) { Column() { Text(`${content}` ).fontSize(20).height("30%") Text('失败原因:失败原因失败原因失败原因失败原因失败原因失败原因失败原因!').fontSize(16).height("30%") Row() { Button("确认").onClick(() => { promptAction.closeCustomDialog(customDialogId) }) Blank().width(50) Button("取消").onClick(() => { promptAction.closeCustomDialog(customDialogId) }) } .margin({ top: 30 }) }.height(200).padding(5) } export function testPromptDialog() { const that = GlobalContext.getContext().getObject('UIContext') as UIContext; if (that) { promptAction.openCustomDialog({ builder: customDialogBuilder.bind(that, "网络请求失败!") }).then((dialogId: number) => { customDialogId = dialogId; }) } }3.页面入口调用import { GlobalContext } from '../uitls/GlobalContext' import { testPromptDialog } from '../uitls/DialogUtils' @Entry @Component struct Index { aboutToAppear(): void { GlobalContext.getContext().setObject('UIContext', this) } build() { Row() { Column() { Button("promptAction弹窗") .onClick(() => { testPromptDialog() }) } .width('100%') } .height('100%') } }
目前弹框暂时都是挂载在组件下,暂无其他实现方式。参考以下demo:
1、新建GlobalContext.ets工具类
2.新建DialogUtils.ets工具类
3.页面入口调用