有没有方法可以通过上下文对象(context)就弹出自定义dialog?

需要通过简单的调用弹出一个自定义dialog,目前看来HarmonyOS弹出自定义弹窗都需要依赖带有Entry的组件才能实现,这样太笨重了,可不可传入一个上下文对象 就把dialog弹出来。


HarmonyOS
2024-10-11 10:50:42
浏览
已于2024-10-11 10:50:59修改
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以参考以下demo:

// 自定义弹窗.ets  
import promptAction from '@ohos.promptAction'  
let myDialogBuilder: CustomBuilder;  
let customDialogId: number = 0  
  
@Builder  
export function customDialogBuilder() {  
  Column() {  
    Text('Custom dialog Message').fontSize(10)  
    Row() {  
      Button("确认").onClick(() => {  
        promptAction.closeCustomDialog(customDialogId)  
      })  
      Blank().width(50)  
      Button("取消").onClick(() => {  
        promptAction.closeCustomDialog(customDialogId)  
      })  
    }  
  }.height(200).padding(5)  
  .backgroundImage($r('app.media.money'))  
  .backgroundImageSize(ImageSize.Cover)  
  .backgroundColor(Color.Transparent)  
  .width('100%')  
  
}  
  
export function changeDialogBuilder(builder: CustomBuilder) {  
  myDialogBuilder = builder  
}  
  
  
export class MyShowTest{  
  showTest() {  
    if (myDialogBuilder === undefined) {  
      return  
    }  
    promptAction.openCustomDialog({  
      builder: myDialogBuilder  
    }).then((dialogId: number) => {  
      customDialogId = dialogId  
    })  
  }  
}  
  
//在@entry中先设置builder,再直接调用showTest即可  
import { customDialogBuilder, changeDialogBuilder, MyShowTest } from '../pages/Page'  
let myShowTest = new MyShowTest()  
@Entry  
@Component  
struct Index {  
  @State message: string = 'Hello World'  
  
  onPageShow(): void {  
    changeDialogBuilder(customDialogBuilder.bind(this))  
  }  
  
  build() {  
    Row() {  
      Column() {  
        Text(this.message)  
          .fontSize(50)  
          .fontWeight(FontWeight.Bold)  
          .onClick(() => {  
            myShowTest.showTest()  
          })  
      }  
      .width('100%')  
    }  
    .height('100%')  
  
    .backgroundColor(Color.Orange)  
  }  
}
分享
微博
QQ
微信
回复
2024-10-11 17:31:03
相关问题
如何获取应用上下文Context
506浏览 • 1回复 待解决
如何在普通ets文件中获取上下文Context
1147浏览 • 1回复 待解决
上下文工具类的方法有哪些?
281浏览 • 1回复 待解决
无法从static上下文引用非static方法
10075浏览 • 1回复 待解决
HarmonyOS 有没有方法直接退出APP
600浏览 • 1回复 待解决
把arkts运行时,当成 JS上下文
1815浏览 • 1回复 待解决
HarmonyOS 自定义Dialog宽度
56浏览 • 1回复 待解决