在 Flutter 中复刻 HarmonyOS 体验:我做了一个 ohos_ui 组件库
在做跨平台开发的过程中,我一直很喜欢 HarmonyOS(OpenHarmony) 的设计语言。
它的 UI 视觉风格简洁、圆润,同时在交互细节上非常讲究——比如按压反馈、按钮形态、阴影层级等,都给人一种 细腻且“有触感” 的体验。
但在实际开发中我发现一个问题:
Flutter 生态中几乎没有专门针对 HarmonyOS 风格的 UI 组件库。
大多数 Flutter 项目要么使用 Material 风格,要么使用 Cupertino 风格。如果想要做出 接近 HarmonyOS 原生体验的界面,往往需要自己一点点去实现交互效果、组件样式和动画。
于是,我决定做一件简单但有意义的事情:
做一个 Flutter 的 HarmonyOS UI 风格组件库。
这就是 OhosUI 项目的由来。
项目介绍
OhosUI 是一个致力于在 Flutter 中还原 HarmonyOS(OpenHarmony)原生 UI 风格与交互体验 的组件库。
项目目标很简单:
- 在 Flutter 中复刻 HarmonyOS 的设计语言
- 提供 简单、可复用的组件
- 尽量还原 真实的交互反馈和动画体验
目前项目仍然处于 早期阶段,只实现了一些基础效果,但我希望通过不断迭代,把它逐渐完善成一个完整的 HarmonyOS 风格组件库。
GitHub 项目地址:
如果你对 Flutter 或 HarmonyOS UI 感兴趣,欢迎一起参与。
为什么要做这个库?
在 Flutter 中实现 HarmonyOS 风格 UI,通常会遇到几个问题:
1. 缺少统一组件
开发者往往需要手写:
- 按压动画
- 圆角样式
- 阴影层级
- 按钮交互
不同项目的实现方式不统一。
2. 交互体验难以复刻
HarmonyOS 的交互有一个明显特点:
“有触感”
比如按钮按压时会有一个非常自然的:
- 缩放
- 回弹
- 过渡动画
Flutter 虽然可以实现,但每个项目都重新写一遍非常浪费时间。
3. 希望 Flutter 生态有 HarmonyOS 风格
Flutter 目前主要有两个官方风格:
- Material
- Cupertino
但对于 HarmonyOS 开发者来说,缺少一个“鸿蒙风格”的组件体系。
这也是 ohos_ui 想解决的问题。
当前已经实现的功能
虽然项目刚开始,但已经实现了一些基础能力。
1. HarmonyPressEffect(鸿蒙按压反馈)
这是我最先实现的组件。
HarmonyOS 的点击效果有一个很明显的特点:
按下时轻微缩小,松开时回弹。
看起来非常自然。
在 ohos_ui 中,只需要简单包裹一个 Widget:
HarmonyPressEffect(
pressedScale: 0.9,
onTap: () {
print("Tapped!");
},
child: Container(
height: 50,
width: 200,
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.circular(12),
),
child: Text(
"点击我体验效果",
style: TextStyle(color: Colors.white),
),
),
);
效果:
- 按下 → 平滑缩小
- 松开 → 回弹恢复
- 支持自定义动画参数
可以给 任何 Widget 添加鸿蒙风格触感反馈。
2. HarmonyIconButton(鸿蒙圆形图标按钮)
第二个组件是一个非常常见的 UI 元素:
圆形图标按钮
HarmonyOS 中很多地方都会用到这种按钮,比如:
- 返回
- 关闭
- 操作按钮
在 ohos_ui 中使用也非常简单:
HarmonyIconButton(
iconName: "chevron_left",
size: 24,
onTap: () {
Navigator.of(context).pop();
},
);
特点:
- 默认鸿蒙风格背景
- 圆形按钮
- SVG 图标支持
- 简洁 API
接下来的开发计划
目前 OhosUi 只是一个 起点。
接下来我计划逐步实现更多组件,包括:
基础组件
- Button
- Toggle
- Slider
- Progress
布局组件
- List
- Grid
- Card(鸿蒙阴影)
系统反馈
- Toast
- Dialog
- ActionSheet
导航组件
- NavigationBar
- TabBar
动画系统
- 页面转场动画
- 手势交互
- 更真实的触感反馈
目标是让 Flutter 项目可以 比较轻松地构建 HarmonyOS 风格应用界面。
为什么开源?
我做这个库有两个原因:
1. Flutter + HarmonyOS 生态还很新
很多东西需要社区一起探索。
2. UI 组件库适合社区协作
一个人很难覆盖所有组件,但社区可以。
比如未来可能会有:
- 更多组件
- 更多动画
- 更完整设计规范实现
欢迎大家一起参与
如果你:
- 在做 Flutter
- 在做 HarmonyOS
- 对 UI 组件库感兴趣
都非常欢迎一起参与这个项目。
你可以:
- 提交 Issue
- 提交 PR
- 提建议
- 或者直接在项目中使用
GitHub:
最后
HarmonyOS 的 UI 设计真的很优秀,而 Flutter 又是一个非常强大的跨平台框架。
我希望 ohos_ui 能成为两者之间的一个小桥梁。
如果你觉得这个项目有意思,欢迎:
- ⭐ Star
- 🧪 尝试使用
- 🤝 一起贡献
让我们一起把 HarmonyOS 风格 UI 带到 Flutter 生态里。