HarmonyOS 鸿蒙Next--emitter订阅状态变化显示隐藏自定义弹窗Loading
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)
}
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
更多关于HarmonyOS 鸿蒙Next--emitter订阅状态变化显示隐藏自定义弹窗Loading的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,处理emitter
订阅状态变化并显示或隐藏自定义弹窗(如Loading弹窗)时,通常涉及事件监听和UI更新。以下是一个基本的实现思路:
-
事件订阅:首先,通过
emitter
订阅所需的状态变化事件。例如,如果是一个网络请求的加载状态,你可能需要订阅开始加载和加载完成的事件。 -
UI更新:在事件回调中,根据事件类型(如开始加载、加载完成)来显示或隐藏Loading弹窗。这通常涉及到对UI组件的可见性属性进行操作。
-
自定义弹窗:创建一个自定义的Loading弹窗组件,该组件可以包含简单的动画或文本提示,以告知用户当前正在加载。
-
状态管理:确保你的应用状态(如加载状态)能够被正确管理和更新,以便在UI中反映最新的状态。
-
生命周期管理:在组件的生命周期中(如页面创建、销毁),确保正确订阅和取消订阅事件,避免内存泄漏。
实现上述功能时,需要熟练掌握HarmonyOS的UI框架和事件处理机制。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html