SmartDialog问世,能否终结横扫鸿蒙弹窗乱象?
- 内容介绍
- 文章标签
- 相关推荐
SmartDialog问世,能否终结横扫鸿蒙弹窗乱象?
最近, 鸿蒙生态里冒出来一个叫 SmartDialog 的玩意儿,说是要来终结鸿蒙弹窗的“乱象”。说实话,现在鸿蒙的弹窗系统,真的是……一言难尽。你写个弹窗, 得先搞个CustomDialog,再写一堆bindXxx,再加个onConfirm,再加个onCancel,再加个一堆回调,再说说你发现,你写了一天后来啊弹窗还是错位的,或者在某些场景下直接崩了。你是不是也遇到过?

我猜你一定也经历过 写个弹窗,后来啊在某个页面里弹不出来或者弹出来之后点个按钮没反应,再或者点个按钮直接闪退……是的,我懂你。所以当看到这个叫 SmartDialog 的东西时我第一反应是:这玩意儿能行吗,加油!?
但看完它的功能介绍,我沉默了。这东西,真的有点东西,深得我心。。
SmartDialog 是什么?
简单 SmartDialog 是一个鸿蒙平台上的弹窗管理库,它不是鸿蒙官方的,而是社区大佬自己搞的。它想解决鸿蒙原生弹窗系统里那些“奇葩”的限制,比如:
- 弹窗不能跨页面调用
- 弹窗不能嵌套
- 弹窗样式不能灵活控制
- 弹窗不能动态绑定
- ……
而 SmartDialog 就是来干这事儿的。它让你在任何地方都能弹出一个弹窗, 而且不用再写一堆恶心的回调和绑定,直接调用 就完事了,我狂喜。。
SmartDialog 的几个亮点
我们来随便看看几个特性:
| 特性 | 说明 |
|---|---|
| attachEasy | 支持在任意位置弹出, 无需绑定目标组件 |
| customTag | 支持给弹窗打标签,方便管理多个弹窗 |
| loadingCustom | 支持自定义 Loading 样式 |
| customLocation | 支持自定义弹窗位置 |
| customUseArgs | 支持传参给弹窗组件 |
卷不动了。 你看看,是不是比鸿蒙原生的弹窗系统舒服多了?
而且, 它还支持自定义弹窗样式,比如你可以在 Entry 页面里直接设置全局默认样式,这样你就不需要每次都写一堆重复代码了。
它能解决什么问题?
我们先看下表:
| 功能 | 原生鸿蒙 | SmartDialog |
|---|---|---|
| 弹窗位置 | 只能绑定组件 | 任意位置弹出 |
| 弹窗样式 | 固定样式 | 可自定义 |
| 弹窗数量 | 只能弹一个 | 支持多个弹窗 |
| 弹窗管理 | 需要手动管理 | 支持标签管理 |
是不是一目了然?
代码示例
来点代码看看:
@Entry
@Component
struct Index {
build {
Stack {
OhosSmartDialog({
// custom global loading
loadingBuilder: customLoading,
})
}.height.width
}
}
@Builder
export function customLoading {
LoadingProgress.width.height.color
}
是不是比鸿蒙原生的 CustomDialog 简单多了?
琢磨琢磨。 说实话, 鸿蒙原生的弹窗系统,真的是……太难用了。你写个弹窗, 得先搞个CustomDialog,再写一堆bindXxx,再加个onConfirm,再加个一堆回调,再说说你发现,你写了一天后来啊弹窗还是错位的,或者弹出来之后点个按钮没反应,再或者点个按钮直接闪退……
所以SmartDialog 能不能终结鸿蒙弹窗的乱象,我怀疑...?
我觉得,能。至少在目前的鸿蒙生态里它比原生弹窗系统好用太多。 说句可能得罪人的话... 虽然它不是官方的,但它的出现,至少让开发者看到了希望。
当然 它现在还只是个“半成品”,功能还没完全对齐 Flutter 版本的 SmartDialog, 容我插一句... 但至少,它已经迈出了第一步。
而且, 它还支持自定义样式、位置、标签管理、跨页面调用……这些功能,都是鸿蒙原生弹窗系统没有的。
所以它能不能终结鸿蒙弹窗的乱象?
抓到重点了。 我觉得,能。至少在目前的鸿蒙生态里它比原生弹窗系统好用太多。虽然它现在还只是个“半成品”,但至少,它已经迈出了第一步。
SmartDialog问世,能否终结横扫鸿蒙弹窗乱象?
最近, 鸿蒙生态里冒出来一个叫 SmartDialog 的玩意儿,说是要来终结鸿蒙弹窗的“乱象”。说实话,现在鸿蒙的弹窗系统,真的是……一言难尽。你写个弹窗, 得先搞个CustomDialog,再写一堆bindXxx,再加个onConfirm,再加个onCancel,再加个一堆回调,再说说你发现,你写了一天后来啊弹窗还是错位的,或者在某些场景下直接崩了。你是不是也遇到过?

我猜你一定也经历过 写个弹窗,后来啊在某个页面里弹不出来或者弹出来之后点个按钮没反应,再或者点个按钮直接闪退……是的,我懂你。所以当看到这个叫 SmartDialog 的东西时我第一反应是:这玩意儿能行吗,加油!?
但看完它的功能介绍,我沉默了。这东西,真的有点东西,深得我心。。
SmartDialog 是什么?
简单 SmartDialog 是一个鸿蒙平台上的弹窗管理库,它不是鸿蒙官方的,而是社区大佬自己搞的。它想解决鸿蒙原生弹窗系统里那些“奇葩”的限制,比如:
- 弹窗不能跨页面调用
- 弹窗不能嵌套
- 弹窗样式不能灵活控制
- 弹窗不能动态绑定
- ……
而 SmartDialog 就是来干这事儿的。它让你在任何地方都能弹出一个弹窗, 而且不用再写一堆恶心的回调和绑定,直接调用 就完事了,我狂喜。。
SmartDialog 的几个亮点
我们来随便看看几个特性:
| 特性 | 说明 |
|---|---|
| attachEasy | 支持在任意位置弹出, 无需绑定目标组件 |
| customTag | 支持给弹窗打标签,方便管理多个弹窗 |
| loadingCustom | 支持自定义 Loading 样式 |
| customLocation | 支持自定义弹窗位置 |
| customUseArgs | 支持传参给弹窗组件 |
卷不动了。 你看看,是不是比鸿蒙原生的弹窗系统舒服多了?
而且, 它还支持自定义弹窗样式,比如你可以在 Entry 页面里直接设置全局默认样式,这样你就不需要每次都写一堆重复代码了。
它能解决什么问题?
我们先看下表:
| 功能 | 原生鸿蒙 | SmartDialog |
|---|---|---|
| 弹窗位置 | 只能绑定组件 | 任意位置弹出 |
| 弹窗样式 | 固定样式 | 可自定义 |
| 弹窗数量 | 只能弹一个 | 支持多个弹窗 |
| 弹窗管理 | 需要手动管理 | 支持标签管理 |
是不是一目了然?
代码示例
来点代码看看:
@Entry
@Component
struct Index {
build {
Stack {
OhosSmartDialog({
// custom global loading
loadingBuilder: customLoading,
})
}.height.width
}
}
@Builder
export function customLoading {
LoadingProgress.width.height.color
}
是不是比鸿蒙原生的 CustomDialog 简单多了?
琢磨琢磨。 说实话, 鸿蒙原生的弹窗系统,真的是……太难用了。你写个弹窗, 得先搞个CustomDialog,再写一堆bindXxx,再加个onConfirm,再加个一堆回调,再说说你发现,你写了一天后来啊弹窗还是错位的,或者弹出来之后点个按钮没反应,再或者点个按钮直接闪退……
所以SmartDialog 能不能终结鸿蒙弹窗的乱象,我怀疑...?
我觉得,能。至少在目前的鸿蒙生态里它比原生弹窗系统好用太多。 说句可能得罪人的话... 虽然它不是官方的,但它的出现,至少让开发者看到了希望。
当然 它现在还只是个“半成品”,功能还没完全对齐 Flutter 版本的 SmartDialog, 容我插一句... 但至少,它已经迈出了第一步。
而且, 它还支持自定义样式、位置、标签管理、跨页面调用……这些功能,都是鸿蒙原生弹窗系统没有的。
所以它能不能终结鸿蒙弹窗的乱象?
抓到重点了。 我觉得,能。至少在目前的鸿蒙生态里它比原生弹窗系统好用太多。虽然它现在还只是个“半成品”,但至少,它已经迈出了第一步。

