找回密码
 立即注册
首页 业界区 业界 详解HarmonyOS NEXT仓颉开发语言中的全局弹窗 ...

详解HarmonyOS NEXT仓颉开发语言中的全局弹窗

删一 2025-6-23 14:10:17
之前分享过仓颉开发语言中的自定义弹窗,那一次的自定义弹窗需要在对应页面先初始化再进行弹出,不是很方便。今天分享一下不依赖页面的全局弹窗。
仓颉提供了全局弹窗模块prompt_action,使用之前先将它导入:
  1. import ohos.prompt_action.*
复制代码
该模块提供了三种预设好的弹窗形式,第一种是简单的文字提示,可以设置弹窗内容,弹窗持续时间、弹窗模式等属性,使用方式如下:
  1. PromptAction.showToast(message: '这是一个弹窗', duration: 4000, bottom: "80vp", showMode: ToastShowMode.Default)
复制代码
你可以在任意页面任何地方随时调用,非常方便。看一下效果:
1.png

第二种是对话弹窗,内容有标题、内容和按钮的提示弹窗,比上一种弹窗内容丰富了些,适用于大多数场景,使用方式如下:
  1. let buttons: Array<ButtonInfo> = [
  2.   ButtonInfo("确认", Color.RED),
  3.   ButtonInfo("取消", Color.BLACK)
  4. ]
  5. PromptAction.showDialog(title: "标题", message: "删除不可取消,确认删除?", buttons: buttons, callback: { err: Option, i: Option<Int32> =>
  6.   
  7.   })
复制代码
弹窗效果图如下:
2.png

第三种是菜单弹窗,支持传入1到6个按钮,使用方式和对话框类似:
  1. let buttons: Array<ButtonInfo> = [
  2.   ButtonInfo("选项1", Color.BLACK),
  3.   ButtonInfo("选项2", Color.BLACK)
  4. ]
  5. PromptAction.showActionMenu(title: "标题", buttons: buttons, callback: { err: Option, i: Option<Int32> =>
  6.   
  7.   })
复制代码
效果图如下:
3.png

如果这三种弹窗都不能满足你的要求,PromptAction还支持设置自定义内容,它会返回弹窗的id,我们可以根据id来关闭弹窗,具体使用方式如下:
  1. @State var customdialogId:Int32 = 0
  2. @Builder
  3. func CustomDialog() {
  4.     Column(10) {
  5.         Image(@r(app.media.startIcon))
  6.         .width(50)
  7.         .height(50)
  8.         Text("这是自定义弹窗")
  9.         .height(50.vp)
  10.         Button("确定")
  11.         .onClick({
  12.             => PromptAction.closeCustomDialog(customdialogId)
  13.         })
  14.     }
  15.     .margin(10.vp)
  16. }
  17. PromptAction.openCustomDialog(CustomDialogOptions(builder: bind(this.CustomDialog, this)),{ id =>
  18.             customdialogId = id
  19.             })
复制代码
 
4.png

以上就是仓颉语言中全局弹窗的相关内容,感谢阅读。##HarmonyOS语言##仓颉##购物#

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册