Flutter实现鸿蒙UI特性

0 阅读4分钟

Group 1 (4).png

在 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 项目地址:

github.com/JalorOo/oho…

如果你对 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 添加鸿蒙风格触感反馈。

image.png


2. HarmonyIconButton(鸿蒙圆形图标按钮)

第二个组件是一个非常常见的 UI 元素:

圆形图标按钮

HarmonyOS 中很多地方都会用到这种按钮,比如:

  • 返回
  • 关闭
  • 操作按钮

ohos_ui 中使用也非常简单:

HarmonyIconButton(
  iconName: "chevron_left",
  size: 24,
  onTap: () {
    Navigator.of(context).pop();
  },
);

特点:

  • 默认鸿蒙风格背景
  • 圆形按钮
  • SVG 图标支持
  • 简洁 API

image.png


接下来的开发计划

目前 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:

github.com/JalorOo/oho…


最后

HarmonyOS 的 UI 设计真的很优秀,而 Flutter 又是一个非常强大的跨平台框架。

我希望 ohos_ui 能成为两者之间的一个小桥梁。

如果你觉得这个项目有意思,欢迎:

  • ⭐ Star
  • 🧪 尝试使用
  • 🤝 一起贡献

让我们一起把 HarmonyOS 风格 UI 带到 Flutter 生态里。