Flutter for OpenHarmony 简单的应用开发详解:从代码到页面的完整构建流程

本文将分步骤详细讲解一个简单 Web 页面的由来与实现过程。我们将从项目结构、代码逻辑、运行机制到最终展示效果,层层递进地解析这个“小晚课堂”应用是如何一步步构建出来的。
最终效果图
在这里插入图片描述

第一步:启动开发环境 —— IDE 与项目准备

1. 使用 IntelliJ IDEA / Android Studio

  • 图片左侧是 IntelliJ IDEA(或 Android Studio)集成开发环境。
  • 这是一个专为 Flutter 和 Dart 设计的强大 IDE,支持代码高亮、自动补全、调试和热重载等功能。

2. 创建并打开项目 oh.demo02这篇文章有解释怎么创建项目

  • 当前打开的项目名为 oh.demo02,这是一个标准的 Flutter 项目。
  • 项目根目录包含以下关键文件:
    • lib/main.dart:主入口文件,程序从这里开始执行。
    • test/widget_test.dart:用于测试 UI 组件。
    • pubspec.yaml:定义依赖库(未显示在图中,但存在)。
    • assets/:存放图片、字体等资源(未展开)。

✅ 说明:这是典型的 Flutter 项目结构,遵循官方推荐规范。


第二步:编写核心代码 —— main.dart 文件解析

我们来看 lib/main.dart 中的核心代码:

import 'package:flutter/material.dart';

void main(List<String> args) {
  runApp(MaterialApp(
    title: "万能的网站",
    theme: ThemeData(
      scaffoldBackgroundColor: const Color.fromARGB(255, 62, 192, 201),
    ),
    home: Scaffold(
      appBar: AppBar(
        title: const Text("欢迎来到小晚的课堂"),
      ),
      body: const Center(
        child: Text(
          "在这里我们将一起提升自我",
          style: TextStyle(fontSize: 24, color: Colors.white),
        ),
      ),
    ),
  ));
}

分步解释代码逻辑

✅ Step 1:导入 Flutter 材料组件库
import 'package:flutter/material.dart';
  • 引入了 Flutter 的 Material Design 组件系统,包括按钮、文本框、导航栏等。
✅ Step 2:定义程序入口 main()
void main(List<String> args) {
  runApp(...);
}
  • main() 是 Dart 程序的起点,所有应用都从这里启动。
  • runApp() 方法负责启动 Flutter 应用树。
✅ Step 3:创建 MaterialApp 根组件
MaterialApp(
  title: "万能的网站", // 设置应用标题(浏览器标签页显示)
  theme: ThemeData(     // 全局主题设置
    scaffoldBackgroundColor: const Color.fromARGB(255, 62, 192, 201)
  ),
  home: Scaffold(...)   // 主页面内容
)
  • title:控制浏览器标签页标题。
  • theme:设置全局样式,如背景色。
  • scaffoldBackgroundColor:使用 ARGB 值设置背景色(青绿色),对应十六进制 #3ECCCA

🎨 色值解析:Color.fromARGB(255, 62, 192, 201) → A=255(完全不透明),R=62,G=192,B=201 → 青绿色。

✅ Step 4:构建页面骨架 Scaffold
home: Scaffold(
  appBar: AppBar(title: const Text("欢迎来到小晚的课堂")),
  body: const Center(
    child: Text(
      "在这里我们将一起提升自我",
      style: TextStyle(fontSize: 24, color: Colors.white),
    ),
  ),
)
  • Scaffold 是 Material Design 的基础布局容器。
  • appBar:顶部导航栏,显示标题。
  • body:主体内容区域,放置主要 UI 元素。
✅ Step 5:居中文本 Center + Text
const Center(
  child: Text(
    "在这里我们将一起提升自我",
    style: TextStyle(fontSize: 24, color: Colors.white),
  ),
)
  • Center 将子元素水平垂直居中。
  • Text 显示文字内容。
  • TextStyle 设置字体大小为 24px,颜色为白色(Colors.white)。

✅ 注意:使用 const 创建不可变对象,提高性能并支持热重载。


第三步:运行与调试 —— 控制台输出分析

查看终端日志(调试控制台)

Flutter assets will be downloaded from https://storage.flutter-io.cn...
Launching lib/main.dart on Edge in debug mode...
This app is linked to the debug service: ws://127.0.0.1:59349/ws
Debug service listening on ws://127.0.0.1:59349/ws
Connecting to VM Service at ws://127.0.0.1:59349/ws
Connected to the VM Service.

日志含义解析:

日志内容 含义
Flutter assets will be downloaded... 正在从 CDN 下载 Flutter 资源文件(如图标、字体)
Launching lib/main.dart on Edge... 正在以 Debug 模式启动应用,目标设备为 Edge 浏览器
ws://127.0.0.1:59349/ws 调试服务端口,用于连接 IDE 进行断点调试
Connected to the VM Service 成功连接到 Dart 虚拟机,可以进行实时调试

⚠️ 提示:如果网络慢,可能会卡在资源下载阶段;建议使用国内镜像源加速。


第四步:浏览器预览 —— 最终页面呈现

点击run即可出现预览图在这里插入图片描述

URL 地址

localhost:58393
  • 这是 Flutter 在本地启动的 Web 服务器地址。
  • 每次运行时端口号可能不同(如 58393、52307 等),由系统动态分配。

页面结构分解

1. 顶部标题栏(AppBar)
  • 文字:“欢迎来到小晚的课堂”
  • 背景色:默认蓝色(Material 主题默认)
  • 字体:黑色,居中对齐
2. 主体内容区(Body)
  • 背景色:青绿色(#3ECCCA
  • 居中大字:“在这里我们将一起提升自我”
  • 字体大小:24px,白色,清晰易读
3. 底部导航栏
  • 包含三个链接:
    • 课件
    • 知识点
    • 模拟测试
  • 当前未实现点击跳转功能,可能是后续扩展部分。
  • 右侧有语音输入按钮(麦克风图标),表明支持语音交互。

🔧 说明:这些底部按钮不是由当前 main.dart 代码生成的,可能是通过 BottomNavigationBar 或其他组件动态加载,或来自外部框架(如 H5 混合开发)。


第五步:热重载与实时更新

特性:Hot Reload(热重载)

  • 修改代码后无需重新编译整个应用。
  • 按下 Ctrl+Shift+F10(Windows)或 Cmd+Shift+R(Mac),即可立即刷新页面。
  • 支持快速迭代开发,极大提升效率。

示例场景:

假设你想把标题改为“欢迎来到小晚的编程课堂”,只需修改:

title: const Text("欢迎来到小晚的编程课堂"),

然后按快捷键,浏览器中的标题就会立刻更新!


第六步:页面构建流程总结(时间线)

步骤 动作 结果
1 编写 main.dart 代码 定义应用结构和样式
2 运行 flutter run 命令 启动调试服务
3 IDE 自动打开浏览器 访问 localhost:58393
4 加载 Flutter 资源 下载并渲染组件
5 构建 Widget 树 MaterialAppText 逐层渲染
6 渲染 DOM 并显示 用户看到最终页面

第七步:打开Dev运行虚拟机出现最终页面

在这里插入图片描述

✅ 总结:一个页面的诞生全过程

“每一个像素都是代码的结晶。”

这张截图展示了一个完整的 Flutter Web 应用开发闭环:

  1. 代码层面:使用 Dart + Flutter 框架编写声明式 UI。
  2. 运行层面:通过 flutter run 启动调试服务,连接浏览器。
  3. 展示层面:在本地服务器上呈现美观、响应式的网页界面。
  4. 交互层面:支持热重载、调试、语音输入等现代开发特性。

🚀 建议与扩展方向

方向 实现方式 目标
添加路由 使用 Navigator.push() 实现“课件”、“知识点”跳转
增加状态管理 引入 ProviderRiverpod 支持动态数据更新
优化适配 使用 MediaQuery 适配手机、平板、PC
部署上线 flutter build web 发布到 GitHub Pages 或云服务器

📌 结语

通过这一系列步骤,我们不仅看到了一个简单的“小晚课堂”页面是如何被构建出来的,更重要的是理解了 Flutter 的工作原理与开发哲学

一切皆为 Widget” —— 从最底层的 Text 到复杂的 Scaffold,每个元素都是可组合、可复用的组件。

如果你正在学习 Flutter,不妨动手复制这段代码,在自己的环境中运行一次,亲身体验“所见即所得”的开发魅力!

🌐 加入社区

欢迎加入 开源鸿蒙跨平台开发者社区,获取最新资源与技术支持:
👉 开源鸿蒙跨平台开发者社区

Logo

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

更多推荐