Flutter 跨平台实战 iOS 主线 · Android 验证 · Flutter-OH 独立轨道 查看 38 课蓝图

FLUTTER COURSE · 01--17

从平台边界出发,
把 Flutter 真正跑起来。

以 iOS 为主讲平台,Android 按阶段完成真实验证,Flutter-OH 使用独立轨道。每一课都围绕可运行、可检查的结果展开。

COURSE MAP

已开放课程

按顺序学习,也可以直接进入需要的主题。

第一部分

先把应用跑起来

01--04
第二部分

补齐开发环境

05--09
LESSON 05

用 VS Code 运行、调试和热重载 Flutter 应用

VS Code 配好 Flutter 与 Dart 扩展后,可以完成设备选择、运行、断点调试、热重载和问题定位。本篇以 iOS 作为主操作平台;同一套 Flutter 运行与热重载链路也已在 Android 模拟器通过命令行实际验证,不引入新的项目依赖。

开始阅读
LESSON 06

看懂 Android Studio、Android SDK、模拟器与构建流程差异

Android Studio 只是开发入口之一,不等于完整的 Android 工具链。Flutter 面向 Android 运行或构建时,还会依赖 Android SDK、JDK、Gradle、Android Gradle Plugin、设备或模拟器;这些组件与 iOS 的 Xcode、Simulator 和构建系统并不是逐项等价的替换关系。

开始阅读
LESSON 07

认识 DevEco Studio、Flutter-OH 与大陆下载环境

Flutter-OH 不是 Flutter 官方 stable 增加的一个开关,而是 CPF-Flutter 基于特定 Flutter 上游版本维护的 OpenHarmony 适配 SDK。搭建环境时必须同时锁定 Flutter-OH tag、DevEco Studio、OpenHarmony API 和 Dart 版本,不能把第 03 课安装的上游 Flutter 直接拿来构建 HAP。

开始阅读
LESSON 08

用绝对路径切换上游 Flutter 与 Flutter-OH

同一台 Mac 上可以并存上游 Flutter 与 Flutter-OH,但不要把两套 SDK 的 bin 同时永久加入 PATH。本课程采用“分别保存 SDK,执行命令时写明 SDK 绝对路径”的方式:iOS/Android 命令固定交给上游 Flutter,OpenHarmony 命令固定交给 Flutter-OH。

开始阅读
LESSON 09

认识 Flutter 项目:共享源码、平台工程与生成文件

Flutter 项目不是只有 lib/main.dart,也不是四套彼此独立的应用。lib/ 保存共享 Dart 源码,ios/、android/ 和未来的 ohos/ 分别承担平台接入,项目根目录的 pubspec.yaml 则声明包、SDK 约束、资源和 Flutter 配置。

开始阅读
第三部分

只学够用的 Dart

10--15
LESSON 10

用 Dart 表达一条可靠的灵感数据

Dart 是类型安全的语言,但写局部变量时通常不需要重复标注显而易见的类型。会变化的状态用 var,初始化后不再重新赋值的变量用 final,编译时就确定且内容也不允许修改的值用 const。只有业务上确实允许“没有值”时,才把类型写成 String? 这样的可空类型。

开始阅读
LESSON 11

用函数和类建立一条有效的灵感

函数负责完成边界明确的操作,类负责把属于同一个业务对象的数据和行为组织在一起。为 SparkIdea 设计构造函数时,标题使用 required 命名参数,说明允许省略,优先级和完成状态提供默认值;构造过程同时清洗和检查输入,避免创建标题无效的灵感对象。

开始阅读
LESSON 12

用集合和模式匹配整理多条灵感

把多条灵感放进 List,用 where 筛选、用 map 转换,再把需要排序的数据复制成列表。标签用 Set 去重,按标识查找用 Map。结构化输入先通过模式匹配检查字段类型,再交给 SparkIdea 构造函数检查业务规则。

开始阅读
LESSON 13

等待灵感加载,并正确处理异步失败

Future<T> 表示一次异步操作将来的结果,成功时得到 T,失败时得到错误。async 函数返回 Future,await 等待它完成;把 await 放进 try,才能在这一层处理异步错误。空列表是成功结果,加载失败应保留失败语义,不能统一变成空列表。

开始阅读
LESSON 14

用 Stream 接收变化,并在需要时停止

一次加载需要一个结果,用 Future;同一次订阅需要陆续接收变化,才考虑 Stream。本篇用 async 生成三次灵感列表快照,用 await for 依次处理,并明确正常结束、发生错误和主动停止的差别。

开始阅读
LESSON 15

用测试验证 Dart 业务逻辑

把业务规则写成明确的输入和预期结果,再交给测试工具自动比较。同步结果用 expect,同步异常把调用包进函数,Future 和 Stream 用 await expectLater 等待匹配完成。测试要能在行为错误时失败,不能只运行代码或打印“通过”。

开始阅读
第四部分

理解 Flutter UI

16--17