鸿蒙分享(四):弹窗简单封装

代码仓库:https://gitee.com/linguanzhong/share_harmonyos   鸿蒙api:12

引用的harmony-utils地址:OpenHarmony三方库中心仓

引用的harmony-dialog地址:OpenHarmony三方库中心仓

引用的loading-dialog地址OpenHarmony三方库中心仓

import LoadingDialog from '@lyb/loading-dialog'
import { ToastUtil } from '@pura/harmony-utils'
import { BaseDialogOptions, DialogHelper } from '@pura/harmony-dialog'
import { BaseOptions } from './BaseOptions'
import { DialogParams } from './DialogParams'
import { BaseConfirmDialog } from './BaseConfirmDialog'/*** 弹窗类*/
export class BaseDialog {//确定弹窗static showConfirmDialog(params: DialogParams) {params.isClickClose = truelet drawer: BaseOptions = {params: params,alignment: DialogAlignment.Center,offset: { dx: 0, dy: 0 },autoCancel: params.autoCancel ?? false,backCancel: params.backCancel ?? false,}if (BaseDialog.isDialogShowing(drawer.dialogId)) {BaseDialog.hintDialog(drawer.dialogId)}return DialogHelper.showCustomDialog(wrapBuilder(BuilderConfirmDialog), drawer)}//自定义弹窗static showCustomDialog<T extends BaseDialogOptions>(builder: WrappedBuilder<[T]>, options: T): string {return DialogHelper.showCustomDialog(builder, options)}static showToast(content: string | Resource) {ToastUtil.showToast(content, {duration: 2000,alignment: Alignment.Bottom,})}static showLoading(msg: string = "加载中...") {LoadingDialog.showLoading({msg: msg,tintColor: Color.White,textColor: Color.White,})}static showProgress(progress: number) {LoadingDialog.showProgress("", progress)}static hideProgress() {LoadingDialog.hide()}static hintLoading() {LoadingDialog.hide()}static hintDialog(dialogId?: string) {DialogHelper.closeDialog(dialogId)}static isDialogShowing(dialogId?: string): boolean {return DialogHelper.isShowing(dialogId)}
}//确认弹窗
@Builder
function BuilderConfirmDialog(options: BaseOptions) {BaseConfirmDialog({params: options.params,dialogId: options.dialogId})
}
import { BaseImage } from '../../view/BaseImage'
import { BaseDialog } from './BaseDialog'
import { DialogParams } from './DialogParams'//确定弹窗
@Component
export struct BaseConfirmDialog {@Prop params: DialogParams@Prop dialogId: stringbuild() {Stack({alignContent: Alignment.Top}) {Column() {if (this.params.title) {Text(this.params.title).fontSize(16).textAlign(TextAlign.Center).fontColor($r("app.color.color_10141A")).margin({ top: 43 })}if (this.params.content) {Text(this.params.content).fontSize(12).fontColor($r("app.color.color_8E98AA")).textAlign(TextAlign.Center).margin({ top: 10 })}Row() {if (!this.params.isHideCancelBtnText) {Button(this.params.cancelBtnText).border({ width: 1, color: this.params.primaryColor }).backgroundColor(Color.Transparent).fontColor(this.params.primaryColor).fontSize(14).onClick(() => {if (this.params.onCancel) {this.params.onCancel()if (this.params.isClickClose) {BaseDialog.hintDialog(this.dialogId)}} else {BaseDialog.hintDialog(this.dialogId)}}).layoutWeight(1)Blank().margin({ left: 15, right: 15 })}Button(this.params.confirmBtnText).backgroundColor(this.params.primaryColor).fontColor(Color.White).fontSize(14).onClick(() => {if (this.params.onConfirm) {this.params.onConfirm(this.dialogId)if (this.params.isClickClose) {BaseDialog.hintDialog(this.dialogId)}} else {BaseDialog.hintDialog(this.dialogId)}}).layoutWeight(1)}.margin({ top: 20 }).width("100%").justifyContent(FlexAlign.SpaceBetween)}.backgroundColor(Color.White).width("80%").padding({ left: 23, right: 23, bottom: 21 }).margin({top: this.params?.headIcon == null ? 0 : 70}).borderRadius(20)if (this.params.headIcon) {BaseImage({src: this.params?.headIcon,mWidth: 93,mHeight: 81,})}}}
}

import { BaseDialogOptions } from '@pura/harmony-dialog';
import { DialogParams } from './DialogParams';//自定义弹框
export interface BaseOptions extends BaseDialogOptions {width?: number;params?: DialogParams;
}

@Observed
export class DialogParams {dialogId?: stringheadIcon?: Resource;primaryColor?: string | Resource;title?: string | Resource;content?: string | Resource;cancelBtnText?: string | Resource = "取消";confirmBtnText?: string | Resource = "确定";isHideCancelBtnText?: boolean = false;onCancel?: () => void;onConfirm?: (dialogId: string) => void;//点击按钮且关闭弹窗isClickClose?: boolean = true;backCancel?: boolean = false;autoCancel ?: boolean = false;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厦门凯酷全科技有限公司抖音电商服务的卓越典范

在短视频和直播带货迅速崛起的时代&#xff0c;厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全科技”&#xff09;以其专业的服务、创新的精神以及对市场的深刻理解&#xff0c;在抖音电商领域中脱颖而出&#xff0c;成为众多品牌商家信赖的选择。本文将深入探讨凯酷全科…

扫二维码进小程序的指定页面

草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…

Java期末考试——题库+浓缩关键知识点

文章分为两部分&#xff1a;知识点总结和题库练习。 每个部分都有相关的考点和题型&#xff0c;确保覆盖考试的主要内容和常见题目。 一篇文章助你拿下期末&#xff01;&#xff01; Java期末考试——题库浓缩关键知识点 一、Java基础知识总结 1. 面向对象的基本特征 Java …

IC验证工程师基础知识

SVA 断言大法&#xff1a; SystemVerilog断言&#xff08;Assertion&#xff09;是一种用于设计验证的语言扩展&#xff0c;它可以在仿真或形式验证过程中指定设计属性并检查其正确性。SystemVerilog断言提供了一种表达设计应满足的属性的方式&#xff0c;允许设计者执行断言、…

C++ constexpr vs const

笼统的讲 constexpr 主要用于编译时期&#xff0c;const用于运行时&#xff0c;但实际上两者都可以同时用于编译时期和运行时。 const const可以修饰全局变量&#xff0c;局部变量&#xff0c;函数参数&#xff0c;指针&#xff0c;引用&#xff0c;也可以修饰类成员函数&…

负载均衡最佳实践及自定义负载均衡器

文章目录 负载均衡最佳实践及自定义负载均衡器一、负载均衡概述二、轮询负载均衡器&#xff08;一&#xff09;理论介绍&#xff08;二&#xff09;Java 实现示例&#xff08;三&#xff09;关键步骤&#xff08;四&#xff09;流程图 三、随机负载均衡器&#xff08;一&#x…

每日速记10道MySQL面试题16

其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…

MitelMiCollab 身份绕过导致任意文件读取漏洞复现(CVE-2024-41713)

0x01 产品描述: Mitel MiCollab 是一个企业协作平台,它将各种通信工具整合到一个应用程序中,提供语音和视频通话、消息传递、状态信息、音频会议、移动支持和团队协作功能。0x02 漏洞描述: Mitel MiCollab 的 NuPoint 统一消息 (NPM) 组件中存在身份验证绕过漏洞,由于输入…

电子商务人工智能指南 6/6 - 人工智能生成的产品图像

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

SQLAlchemy: Python中的强大数据库工具

SQLAlchemy: Python中的强大数据库工具 SQLAlchemy是一个功能强大的Python库&#xff0c;广泛应用于数据库操作。它提供了一个灵活的数据库抽象层&#xff0c;可以帮助开发者轻松与关系型数据库进行交互。本文将介绍SQLAlchemy的核心组件、常用功能以及它的优势。 1. SQLAlch…

21天掌握javaweb-->第12天:Spring Boot项目优化与安全性

Spring Boot项目优化与安全性 1. Spring Boot性能优化 1.1 减少依赖项 评估项目的依赖项&#xff0c;并确保只引入必要的依赖。较多的依赖项可能会增加启动时间&#xff0c;因为它们需要被扫描和初始化。通过删除不需要的依赖项或仅引入必要的模块&#xff0c;可以减少类路径…

Python制做一个简易PDF编辑器——关于PDF文字编辑实现的思路

在Python零基础快速入门最后一篇&#xff0c;我们一起做了一个PDF编辑小工具&#xff0c;里面只实现的PDF翻页浏览等&#xff0c;并没有实现PDF的文字在线编辑&#xff0c;是因为在PDF编辑器中实现文字编辑功能是一个相对复杂的过程&#xff0c;因为PDF格式本质上是一个用于呈现…

GPS北斗卫星授时服务器功能是什么?应用是什么?

GPS北斗卫星授时服务器功能是什么&#xff1f;应用是什么&#xff1f; GPS北斗卫星授时服务器功能是什么&#xff1f;应用是什么&#xff1f; 摘 要:首先对计算机网络时间同步相关技术进行了介绍,然后阐述了时间同步技术在现代计算机网络中的应用与发展,最后指出时间同步网络…

【Linux】存储

声明&#xff1a;以下内容均来学习自《Linux就该这么学》一书 Linux系统中的一切文件都是从“根(/)”目录开始的&#xff0c;并按照文件系统层次化标准&#xff08;FHS&#xff09;采用树形结构来存放文件&#xff0c;以及定义了常见目录的用途。此外&#xff0c;Linux系统中的…

一文了解 Conda(包教包会,不会留言)

Conda 使用指南 Conda 是一个开源包管理和环境管理系统&#xff0c;能够以跨平台的方式进行软件包的安装、管理和依赖管理&#xff0c;特别适用于 Python 和 R 语言的环境管理。本文整理了常见 Conda 命令的使用方法。 1. 安装 Miniconda 首先&#xff0c;下载 Miniconda 的安装…

mysql8 主从复制一直失败

问题描述&#xff1a; 开启同步后从服务器一直失败&#xff0c;报错如下&#xff1a; Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ANONYMOUS at source log …

Python+OpenCV系列:GRAY BGR HSV

以下是 GRAY、BGR 和 HSV 三种色彩空间的对比&#xff0c;涵盖了它们的定义、特点、应用场景和优缺点&#xff1a; 1. 定义 GRAY&#xff1a; 灰度图像仅包含亮度信息&#xff0c;每个像素用一个值&#xff08;通常在0到255之间&#xff09;表示亮度&#xff08;黑到白&#x…

调度系统:使用 Apache Airflow 管理和调度 Couchbase SQL 脚本的实际例子

假设场景如下&#xff1a; 每天定时执行一组 Couchbase SQL 脚本&#xff0c;用于数据同步、聚合和清洗。 脚本包括&#xff1a; 同步数据到 Couchbase 集群。 执行数据聚合查询。 清理过期数据。 要求&#xff1a; 支持任务依赖管理。 提供任务失败后的重试机制。 支…

国城杯2024——Curve

相关知识链接&#xff1a;https://tangcuxiaojikuai.xyz/post/187210a7.html #sagemath from Crypto.Util.number import *def add(P, Q):(x1, y1) P(x2, y2) Qx3 (x1*y2 y1*x2) * inverse(1 d*x1*x2*y1*y2, p) % py3 (y1*y2 - a*x1*x2) * inverse(1 - d*x1*x2*y1*y2, p…