Flutter × OpenHarmony 跨端实战:打造宠物之家「数据概览仪表盘」组件

前言

随着鸿蒙生态的不断壮大,越来越多开发者开始关注 OpenHarmony 跨端应用开发
与此同时,Flutter 凭借其高性能渲染与优秀的跨平台能力,逐渐成为多端统一 UI 的重要选择。

本文将基于 Flutter × OpenHarmony 的组合,实战实现一个 “宠物之家”数据概览仪表盘模块,并对核心 UI 代码进行逐行、拆解式解析,帮助你真正理解 Flutter 在鸿蒙环境下的组件布局思想。


背景

在“宠物之家”这类管理型应用中,首页通常需要一个信息汇总区域,用于快速展示:

  • 当前宠物总数
  • 今日待办事项
  • 健康检查次数
  • 疫苗提醒数量

这类区域本质上就是一个 Dashboard 概览卡片,它需要:

  • 视觉层次清晰
  • 布局自适应
  • 动态数据易替换

而 Flutter 在 OpenHarmony 中正好可以满足这些要求。


Flutter × OpenHarmony 跨端开发介绍

OpenHarmony 提供了 Flutter Engine 适配层,允许 Flutter 应用以:

  • ArkUI 作为宿主
  • Flutter 作为渲染与逻辑层

实现:

一次开发,多端运行(Harmony、Android、iOS)

技术优势:

优势 说明
性能稳定 Skia GPU 渲染
组件丰富 Material / Cupertino
响应式布局 天生适配多尺寸
易于鸿蒙迁移 可复用大部分 Flutter 代码

在这里插入图片描述

开发核心代码(详细逐行解析)

在这里插入图片描述

一、整体结构

Container(
  padding: EdgeInsets.all(20),
  margin: EdgeInsets.symmetric(horizontal: 16),
  decoration: BoxDecoration(
    color: Colors.white,
    borderRadius: BorderRadius.circular(20),
    boxShadow: [
      BoxShadow(
        color: Colors.grey.withOpacity(0.1),
        spreadRadius: 1,
        blurRadius: 3,
        offset: Offset(0, 1),
      ),
    ],
  ),

1️⃣ Container:外层卡片容器

属性 作用
padding 内边距 20px
margin 左右外边距 16px
decoration 设置圆角、阴影、背景色
borderRadius: BorderRadius.circular(20),

👉 让卡片呈现“圆角仪表盘”风格。

boxShadow: [
  BoxShadow(
    color: Colors.grey.withOpacity(0.1),
    spreadRadius: 1,
    blurRadius: 3,
    offset: Offset(0, 1),
  ),
],

👉 阴影让卡片“浮”在界面之上,增强层次感。


二、内部主结构

child: Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: [
  • 使用 Column 垂直布局
  • crossAxisAlignment.start:左对齐标题

三、标题区域

Text(
  '宠物概览',
  style: TextStyle(
    fontSize: 18,
    fontWeight: FontWeight.bold,
    color: Color(0xFF333333),
  ),
),

作用:仪表盘标题
设计点:

  • 深灰色文字
  • 加粗
  • 字号 18

四、间距

SizedBox(height: 16),

👉 控制标题与统计区域之间的垂直距离。


五、核心统计区域

Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: [
    _statCard('3', '总宠物数', Icons.pets),
    _statCard('2', '今日待办', Icons.calendar_today),
    _statCard('5', '健康检查', Icons.favorite),
    _statCard('1', '疫苗提醒', Icons.notifications),
  ],
),
参数 作用
Row 横向排列
spaceAround 四个卡片等距分布

六、_statCard 组件拆解(建议实现)

Widget _statCard(String count, String label, IconData icon) {
  return Column(
    children: [
      Icon(icon, color: Colors.blue, size: 28),
      SizedBox(height: 6),
      Text(
        count,
        style: TextStyle(
          fontSize: 20,
          fontWeight: FontWeight.bold,
        ),
      ),
      Text(
        label,
        style: TextStyle(
          fontSize: 12,
          color: Colors.grey,
        ),
      ),
    ],
  );
}

它实现了:

  • 图标
  • 数字
  • 文本说明

这使得数据区域 模块化、可复用、易维护


在这里插入图片描述

心得

通过这个组件可以明显感受到:

  • Flutter 在 OpenHarmony 上的布局能力几乎无差异
  • UI 表达层与业务逻辑完全解耦
  • 使用组合组件(Container + Column + Row)可快速搭建复杂界面

真正做到:

用一套代码,适配多端生态


在这里插入图片描述

总结

本篇通过一个真实业务场景,完整拆解了 Flutter × OpenHarmony 宠物之家概览模块 的 UI 构建过程。从容器设计、阴影样式、布局组合到统计卡片的组件化封装,每一层都体现了 Flutter 在跨端开发中的高效与优雅。
如果你正在构建鸿蒙应用或跨平台系统,这种模式将是极具价值的实践参考。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐