Dart 是 Flutter 的唯一开发语言,这门课把 Dart 从环境搭建到语法基础讲了一遍。它解决的是这样一个具体问题:你想用 Flutter 做移动端开发,但之前没接触过 Dart,直接看 Flutter 文档会被语法和工具链卡住。先把 Dart 的常见语法和调试方式过一遍,后面学 Flutter 时就能把注意力放在 UI 和业务逻辑上,而不是边写边查“这个变量怎么定义”。

这门课解决什么,适合谁

课程内容集中在 Dart 语言本身,不涉及 Flutter 组件或界面搭建。适合两类人:一是零基础、想先确认自己能不能学会编程的转行者;二是写过 JavaScript 或 Java、想快速迁移到 Dart 的上班族。如果你是纯小白,这门课能让你在两周内写出一段能运行、能调试的 Dart 小程序,并且理解基本语法规则;如果你已有编程基础,可以跳过环境安装,直接看语法部分,半天就能过完。

不建议把这门课当成 Flutter 开发的全部,它只是语言地基。学完它,你还需要继续学 Flutter 的 Widget、布局和状态管理。所以定位要清楚:这是“入门前的热身”,不是“能做 App 的完整课程”。

建议先看哪几块

如果时间有限,优先看三个部分。第一是“开发环境搭建”,尤其是 Visual Studio Code 的配置和调试方法。因为后续练习都要在编辑器里跑代码,环境不通后面全卡住。第二是“完成一个 Dart 程序”里的 HelloWorld 和调试部分,这能让你知道 Dart 代码怎么被执行、断点怎么打,建立起“写代码—运行—看结果”的闭环。第三是“Dart 语法基础”里的变量、常量和引入库。这三块是后续所有语法的共同底座,看懂它们,后面数据类型和函数部分就像填空一样自然。

至于“Dart 语言概述”那几节,可以放到最后当背景知识看。它讲的是“为什么 Flutter 选择 Dart”,属于认知类内容,不影响你动手写代码。建议先动手,再了解原因。

学完能独立做什么,资料怎么配合练习

学完这门课,你能独立完成的事情包括:在自己的电脑上安装 Dart SDK 和编辑器;写一个包含变量、常量、注释、库引入的完整 Dart 文件;用调试工具逐步查看变量变化;理解 Dart 的标识符规则和可见性控制。也就是说,你能用 Dart 写一些控制台小程序,比如计算器、字符串处理、简单的数据排序。这些程序虽然不能帮你做出 App,但能让你对 Dart 的语法产生肌肉记忆。

资料里的视频是主线,但光看视频不够。建议每学完一节,就照着例子在编辑器里敲一遍,不要复制粘贴。遇到报错先自己读错误信息,再回看视频里对应部分。每章结束后,可以自己出一个小题目,比如“写一个程序,定义常量并计算两个数的和”,用来检验掌握程度。环境搭建部分如果卡住,可以反复看,因为不同系统(Windows/macOS)的安装细节不同,跟着做一遍比记笔记有用得多。

最后提醒:这门课的视频总时长大约两小时,但实际练习时间建议翻倍。别急着赶进度,把每个例子都跑通,再进入下一节。等你能不查资料写出一个带库引入和调试断点的 Dart 文件时,就可以放心开始学 Flutter 了。

课程目录

课程目录96 集
  • 1-1 [Dart语言概述] 课程介绍 (02:36).mp4
  • 1-2 [Dart语言概述] Dart语言简介 (02:37).mp4
  • 1-3 [Dart语言概述] Dart语言支持平台开发 (04:56).mp4
  • 1-4 [Dart语言概述] Flutter为什么选择Dart语言 (05:48).mp4
  • 2-1 [开发环境搭建] 下载Dart SDK (04:52).mp4
  • 2-2 [开发环境搭建] Windows下安装Dart SDK (07:55).mp4
  • 2-3 [开发环境搭建] macOS下安装Dart SDK (09:26).mp4
  • 2-4 [开发环境搭建] Visual Studio Code开发工具 (07:54).mp4
  • 2-5 [开发环境搭建] IntelliJ IDEA开发工具 (03:37).mp4
  • 3-1 [完成一个Dart程序] 动动手写一个HelloWorld (07:54).mp4
  • 3-2 [完成一个Dart程序] Dart源代码文件组织结构 (03:29).mp4
  • 3-3 [完成一个Dart程序] Visual Studio Code调试Dart代码 (08:31).mp4
  • 3-4 [完成一个Dart程序] IntelliJ IDEA调试Dart代码 (03:49).mp4
  • 4-1 [Dart语法基础] Dart语言合法标识符规则 (05:01).mp4
  • 4-2 [Dart语法基础] Dart语言标识符命名约定 (05:05).mp4
  • 4-3 [Dart语法基础] 关键字 (05:46).mp4
  • 4-4 [Dart语法基础] 变量 (05:17).mp4
  • 4-5 [Dart语法基础] 常量 (05:28).mp4
  • 4-6 [Dart语法基础] 注释 (04:17).mp4
  • 4-7 [Dart语法基础] 引入库 (09:24).mp4
  • 4-8 [Dart语法基础] 库封装(可见性) (02:58).mp4
  • 4-9 [Dart语法基础] 使用库前缀 (03:36).mp4
  • 5-1 [Dart数据类型] Dart数据类型概述 (09:23).mp4
  • 5-2 [Dart数据类型] 数值类型 (04:55).mp4
  • 5-3 [Dart数据类型] 隐式类型转换 (04:17).mp4
  • 5-4 [Dart数据类型] 显式类型转换 (02:45).mp4
  • 5-5 [Dart数据类型] 布尔类型 (01:46).mp4
  • 5-6 [Dart数据类型] 字符串表示 (05:14).mp4
  • 5-7 [Dart数据类型] 字符串模板 (07:06).mp4
  • 5-8 [Dart数据类型] 字符串常用属性和方法 (15:56).mp4
  • 5-9 [Dart数据类型] 字符串与数值类型相互转换 (06:54).mp4
  • 5-10 [Dart数据类型] 枚举类型 (05:52).mp4
  • 6-1 [运算符] 一元运算符 (04:23).mp4
  • 6-2 [运算符] 二元运算符 (05:49).mp4
  • 6-3 [运算符] 算术赋值运算符 (06:17).mp4
  • 6-4 [运算符] 关系运算符 (04:54).mp4
  • 6-5 [运算符] 逻辑运算符 (06:17).mp4
  • 6-6 [运算符] 位运算符(上) (13:56).mp4
  • 6-7 [运算符] 位运算符(下) (05:09).mp4
  • 6-8 [运算符] 条件运算符 (04:28).mp4
  • 6-9 [运算符] 类型检查运算符 (03:08).mp4
  • 7-1 [控制语句] if语句 (02:23).mp4
  • 7-2 [控制语句] switch语句 (06:11).mp4
  • 7-3 [控制语句] 循环语句 (12:49).mp4
  • 7-4 [控制语句] break语句 (06:15).mp4
  • 7-5 [控制语句] continue语句 (02:25).mp4
  • 8-1 [函数] 函数声明 (09:02).mp4
  • 8-2 [函数] 位置可选参数 (08:13).mp4
  • 8-3 [函数] 命名可选参数 (05:09).mp4
  • 8-4 [函数] 参数默认值 (02:58).mp4
  • 8-5 [函数] 作为其他函数的参数使用 (10:04).mp4
  • 8-6 [函数] 作为其他函数的返回值使用 (06:36).mp4
  • 8-7 [函数] 使用匿名函数 (05:54).mp4
  • 8-8 [函数] 箭头符号 (02:07).mp4
  • 9-1 [类] 类声明 (04:47).mp4
  • 9-2 [类] getter和setter访问器 (07:25).mp4
  • 9-3 [类] 与类名相同构造函数 (09:31).mp4
  • 9-4 [类] 自定义命名构造函数 (04:59).mp4
  • 9-5 [类] 静态变量和静态方法 (06:20).mp4
  • 9-6 [类] 级联符号 (09:02).mp4
  • 10-1 [继承与多态] Dart中的继承实现 (03:03).mp4
  • 10-2 [继承与多态] 调用父类构造函数 (11:54).mp4
  • 10-3 [继承与多态] 成员变量的覆盖(Override) (03:50).mp4
  • 10-4 [继承与多态] 方法的覆盖(Override) (08:21).mp4
  • 10-5 [继承与多态] 多态 (12:37).mp4
  • 10-6 [继承与多态] 为什么使用混入(Mixins) (05:16).mp4
  • 10-7 [继承与多态] 使用混入 (04:28).mp4
  • 10-8 [继承与多态] 混入时的方法覆盖 (03:42).mp4
  • 11-1 [抽象类与接口] 抽象类 (04:47).mp4
  • 11-2 [抽象类与接口] Dart中隐式接口 (04:07).mp4
  • 11-3 [抽象类与接口] 实现接口 (07:21).mp4
  • 12-1 [数据容器] 数据容器 (02:38).mp4
  • 12-2 [数据容器] 创建List对象 (10:01).mp4
  • 12-3 [数据容器] List常用方法和属性 (12:34).mp4
  • 12-4 [数据容器] 遍历List容器 (06:21).mp4
  • 12-5 [数据容器] 创建Set对象 (05:04).mp4
  • 12-6 [数据容器] Set常用方法和属性 (04:54).mp4
  • 12-7 [数据容器] 遍历Set容器 (03:22).mp4
  • 12-8 [数据容器] 创建Map对象 (05:08).mp4
  • 12-9 [数据容器] Map常用方法和属性 (08:00).mp4
  • 12-10 [数据容器] 遍历Map容器 (03:03).mp4
  • 12-11 [数据容器] 使用非泛型容器问题 (03:23).mp4
  • 12-12 [数据容器] List容器中使用泛型 (04:46).mp4
  • 12-13 [数据容器] Set容器中使用泛型 (04:08).mp4
  • 12-14 [数据容器] Map容器中使用泛型 (03:33).mp4
  • 13-1 [异常处理] 异常处理——从一个问题开始 (02:39).mp4
  • 13-2 [异常处理] try-on捕获异常 (04:16).mp4
  • 13-3 [异常处理] try-catch捕获异常 (01:55).mp4
  • 13-4 [异常处理] try-on-catch捕获异常 (04:25).mp4
  • 13-5 [异常处理] 使用finally代码块 (02:21).mp4
  • 13-6 [异常处理] 手动抛出异常 (06:07).mp4
  • 13-7 [异常处理] 自定义异常类 (03:02).mp4
  • 14-1 [异步编程] Dart异步处理机制 (03:48).mp4
  • 14-2 [异步编程] 案例:同步函数实现读取文件 (05:56).mp4
  • 14-3 [异步编程] 案例:异步函数实现读取文件 (06:00).mp4
  • 14-4 [异步编程] Future对象 (06:31).mp4