HarmonyOS 鸿蒙Next--emitter订阅状态变化显示隐藏自定义弹窗Loading

发布于 1周前 作者 wuwangju 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next–emitter订阅状态变化显示隐藏自定义弹窗Loading

0、使用emitter来控制自定义弹窗的显示隐藏,如网络请求开始前弹出自定义loading弹窗,网络请求结束后隐藏弹窗

1、emitter发送消息

  showLoad(show: boolean) {
let eventData: emitter.EventData = {
data: {
“showLoad”: show,
}
};
let options: emitter.Options = {
priority: emitter.EventPriority.IMMEDIATE
};
emitter.emit(EmitterId.LOAD_PROGRESS, options, eventData)
}

cke_4938.png

2、自定义Loading弹窗接收emitter消息

import emitter from @ohos.events.emitter’;
import { EmitterId } from ‘…/…/constants/EmitterId’;
import { LoadingProgressDialog } from ‘./LoadingProgressDialog’;

export class CustomDialogCallback { confirmCallback: Function = () => { }; cancelCallback: Function = () => { }; }

@Component export struct CustomDialogView { @Provide dialogCallBack: CustomDialogCallback = new CustomDialogCallback(); loadingDialog: CustomDialogController = new CustomDialogController({ builder: LoadingProgressDialog(), autoCancel: true, alignment:DialogAlignment.Center, customStyle: true });

aboutToAppear() { emitter.on(EmitterId.LOAD_PROGRESS, (res: emitter.EventData) => { if (res.data?.showLoad) { if (this.loadingDialog) { this.loadingDialog.open(); } } else { if (this.loadingDialog) { this.loadingDialog.close(); } } }) }

aboutToDisappear() { emitter.off(EmitterId.LOAD_PROGRESS) }

build() { } }

3、自定义Loading弹窗

import { R } from @ohos/res’;

@Preview @CustomDialog export struct LoadingProgressDialog { controller: CustomDialogController = new CustomDialogController({ builder: ‘’ });

build() { Column() { LoadingProgress() .width(80) .height(80) .color("#FF0000"); Text(“加载中…”) .margin({ top: R.float.vp10, bottom: R.float.vp10 }); } .width(140) .height(160) .alignItems(HorizontalAlign.Center) .justifyContent(FlexAlign.Center) .borderRadius(R.float.vp10) .backgroundColor(Color.White) } }


更多关于HarmonyOS 鸿蒙Next--emitter订阅状态变化显示隐藏自定义弹窗Loading的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next--emitter订阅状态变化显示隐藏自定义弹窗Loading的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,处理emitter订阅状态变化并显示或隐藏自定义弹窗(如Loading弹窗)时,通常涉及事件监听和UI更新。以下是一个基本的实现思路:

  1. 事件订阅:首先,通过emitter订阅所需的状态变化事件。例如,如果是一个网络请求的加载状态,你可能需要订阅开始加载和加载完成的事件。

  2. UI更新:在事件回调中,根据事件类型(如开始加载、加载完成)来显示或隐藏Loading弹窗。这通常涉及到对UI组件的可见性属性进行操作。

  3. 自定义弹窗:创建一个自定义的Loading弹窗组件,该组件可以包含简单的动画或文本提示,以告知用户当前正在加载。

  4. 状态管理:确保你的应用状态(如加载状态)能够被正确管理和更新,以便在UI中反映最新的状态。

  5. 生命周期管理:在组件的生命周期中(如页面创建、销毁),确保正确订阅和取消订阅事件,避免内存泄漏。

实现上述功能时,需要熟练掌握HarmonyOS的UI框架和事件处理机制。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部