Flutter 小白入门教程Flutter 小白入门教程
首页
学习指南
项目实战
Flutter 官网
编程指南
首页
学习指南
项目实战
Flutter 官网
编程指南
  • 入门基础

    • 📚 基础教程
    • 第1章 - 认识 Flutter
    • 第2章 - 环境搭建
    • 第3章 - Dart 语言基础
    • 第4章 - 第一个 Flutter 应用
    • 第5章 - Widget 基础
    • 第6章 - 布局系统
    • 第7章 - 状态管理入门
    • 第8章 - 页面导航
    • 第9章 - 资源管理
  • 进阶开发

    • 第10章 - 网络请求
    • 第11章 - 本地存储
    • 第12章 - 对话框与反馈
    • 第13章 - 列表进阶
    • 第14章 - 主题定制
    • 第15章 - 状态管理进阶
    • 第16章 - 动画入门
    • 第17章 - 常用第三方包
  • 调试与发布

    • 第18章 - 调试与性能优化
    • 第19章 - 打包与发布
  • 附录

    • 附录A - UI 框架与组件库推荐
    • 附录B - 项目结构最佳实践
    • 附录C - 国际化配置
    • 附录D - 权限处理

第3章 - Dart 语言基础

嗨,朋友!我是长安。

在正式开始写 Flutter 代码之前,我们需要先了解一下 Dart 语言。别担心,Dart 语法非常简洁,如果你有任何编程基础(Java、JavaScript、Python 等),10 分钟就能上手!

🤔 Dart 是什么?

Dart 是 Google 开发的一门编程语言,专门为 Flutter 设计。它的特点是:

  • 📝 语法简洁,容易学习
  • ⚡ 支持 JIT(即时编译)和 AOT(提前编译)
  • 🎯 强类型语言,但支持类型推断
  • 🔄 支持异步编程(Future、async/await)

🚀 在线体验 Dart

你可以直接在浏览器中体验 Dart,无需安装任何东西:

访问 DartPad 在线编辑器

📖 变量与数据类型

1. 声明变量

// 使用 var 声明(自动推断类型)
var name = '长安';
var age = 18;
var height = 1.75;

// 明确指定类型
String city = '北京';
int count = 100;
double price = 99.9;
bool isStudent = true;

// final - 运行时常量(只能赋值一次)
final birthday = DateTime.now();

// const - 编译时常量
const pi = 3.14159;

2. 基本数据类型

类型说明示例
int整数42, -17, 0
double浮点数3.14, -0.5
String字符串'Hello', "World"
bool布尔值true, false
List列表/数组[1, 2, 3]
Map键值对{'name': '长安'}

3. 字符串操作

// 字符串定义
String greeting = 'Hello';
String name = "Flutter";

// 字符串拼接
String message = greeting + ', ' + name;  // Hello, Flutter

// 字符串插值(推荐)
String intro = 'I am learning $name';     // I am learning Flutter
String info = 'Next year I am ${age + 1}';// Next year I am 19

// 多行字符串
String longText = '''
这是第一行
这是第二行
这是第三行
''';

4. List(列表)

// 创建列表
List<String> fruits = ['苹果', '香蕉', '橙子'];
var numbers = [1, 2, 3, 4, 5];

// 访问元素
print(fruits[0]);  // 苹果

// 添加元素
fruits.add('葡萄');

// 遍历列表
for (var fruit in fruits) {
  print(fruit);
}

// 列表长度
print(fruits.length);  // 4

5. Map(映射)

// 创建 Map
Map<String, dynamic> person = {
  'name': '长安',
  'age': 18,
  'city': '北京',
};

// 访问值
print(person['name']);  // 长安

// 添加/修改
person['email'] = 'changan@example.com';

// 遍历 Map
person.forEach((key, value) {
  print('$key: $value');
});

🔀 流程控制

1. 条件判断

int score = 85;

// if-else
if (score >= 90) {
  print('优秀');
} else if (score >= 60) {
  print('及格');
} else {
  print('不及格');
}

// 三元运算符
String result = score >= 60 ? '通过' : '未通过';

// switch-case
String grade = 'A';
switch (grade) {
  case 'A':
    print('优秀');
    break;
  case 'B':
    print('良好');
    break;
  default:
    print('其他');
}

2. 循环

// for 循环
for (int i = 0; i < 5; i++) {
  print('第 $i 次');
}

// for-in 循环
List<String> colors = ['红', '绿', '蓝'];
for (var color in colors) {
  print(color);
}

// while 循环
int count = 0;
while (count < 3) {
  print(count);
  count++;
}

// forEach(函数式)
colors.forEach((color) => print(color));

🎯 函数

1. 基本函数

// 普通函数
int add(int a, int b) {
  return a + b;
}

// 调用
int result = add(3, 5);  // 8

// 无返回值
void sayHello(String name) {
  print('Hello, $name!');
}

2. 箭头函数

// 单行函数可以用箭头语法简写
int multiply(int a, int b) => a * b;

// 等价于
int multiply2(int a, int b) {
  return a * b;
}

3. 可选参数

// 命名参数(用花括号)
void createUser({String? name, int? age}) {
  print('Name: $name, Age: $age');
}
createUser(name: '长安', age: 18);

// 位置可选参数(用方括号)
void greet(String name, [String? greeting]) {
  print('${greeting ?? 'Hello'}, $name!');
}
greet('Flutter');           // Hello, Flutter!
greet('Flutter', '你好');   // 你好, Flutter!

// 默认值
void connect({String host = 'localhost', int port = 8080}) {
  print('Connecting to $host:$port');
}

🏗️ 类与对象

这是 Flutter 开发中最重要的部分,因为 Flutter 的一切都是对象!

1. 定义类

class Person {
  // 属性
  String name;
  int age;
  
  // 构造函数
  Person(this.name, this.age);
  
  // 方法
  void introduce() {
    print('我是 $name,今年 $age 岁');
  }
}

// 使用
var person = Person('长安', 18);
person.introduce();  // 我是 长安,今年 18 岁

2. 命名构造函数

class Point {
  double x;
  double y;
  
  // 普通构造函数
  Point(this.x, this.y);
  
  // 命名构造函数
  Point.origin() : x = 0, y = 0;
  
  Point.fromJson(Map<String, double> json)
      : x = json['x']!,
        y = json['y']!;
}

var p1 = Point(3, 4);
var p2 = Point.origin();
var p3 = Point.fromJson({'x': 1.0, 'y': 2.0});

3. 继承

// 父类
class Animal {
  String name;
  
  Animal(this.name);
  
  void speak() {
    print('$name 发出声音');
  }
}

// 子类
class Dog extends Animal {
  Dog(String name) : super(name);
  
  @override
  void speak() {
    print('$name 汪汪叫');
  }
}

var dog = Dog('旺财');
dog.speak();  // 旺财 汪汪叫

⏰ 异步编程

Flutter 中经常需要处理异步操作(网络请求、文件读写等),掌握异步编程很重要!

1. Future

// Future 代表一个异步操作的结果
Future<String> fetchData() {
  // 模拟网络请求,2秒后返回数据
  return Future.delayed(
    Duration(seconds: 2),
    () => '数据加载完成',
  );
}

// 使用 then 处理结果
fetchData().then((data) {
  print(data);
});

2. async/await

// 使用 async/await 让异步代码看起来像同步代码
Future<void> loadData() async {
  print('开始加载...');
  
  String data = await fetchData();  // 等待结果
  print(data);
  
  print('加载完成!');
}

// 调用
loadData();

3. 错误处理

Future<void> loadDataWithError() async {
  try {
    String data = await fetchData();
    print(data);
  } catch (e) {
    print('出错了:$e');
  } finally {
    print('无论成功失败都会执行');
  }
}

🔒 空安全(Null Safety)

Dart 2.12+ 引入了空安全特性,帮助你避免空指针错误。

// 非空类型(默认)
String name = '长安';  // 不能为 null
// name = null;        // 错误!

// 可空类型(加 ?)
String? nickname;      // 可以为 null
nickname = null;       // OK

// 断言非空(加 !)
print(nickname!.length);  // 确定不为空时使用

// 空值检查
print(nickname?.length);  // 如果为空返回 null

// 空值合并
String displayName = nickname ?? '游客';  // 如果为空使用默认值

📝 小结

这一章我们学习了 Dart 的核心知识:

  • ✅ 变量与数据类型(int、String、List、Map 等)
  • ✅ 流程控制(if、for、while)
  • ✅ 函数定义与调用
  • ✅ 类与对象(构造函数、继承)
  • ✅ 异步编程(Future、async/await)
  • ✅ 空安全特性

学习建议

不需要把所有语法都背下来!先有个印象,写 Flutter 代码时遇到不懂的再回来查。

💪 练习题

  1. 创建一个 Student 类,包含 name 和 score 属性,以及一个判断是否及格的方法
  2. 使用 List 存储 5 个学生,并找出最高分
  3. 写一个异步函数,模拟 3 秒后返回用户信息
点击查看答案

练习1:Student 类

class Student {
  String name;
  int score;
  
  Student(this.name, this.score);
  
  bool isPassed() => score >= 60;
}

练习2:找最高分

List<Student> students = [
  Student('小明', 85),
  Student('小红', 92),
  Student('小刚', 78),
  Student('小美', 95),
  Student('小强', 68),
];

Student topStudent = students.reduce((a, b) => a.score > b.score ? a : b);
print('最高分:${topStudent.name} - ${topStudent.score}分');

练习3:异步函数

Future<Map<String, dynamic>> fetchUser() async {
  await Future.delayed(Duration(seconds: 3));
  return {
    'name': '长安',
    'age': 18,
    'email': 'changan@example.com',
  };
}

void main() async {
  print('加载中...');
  var user = await fetchUser();
  print('用户信息:$user');
}

🚀 下一步

Dart 基础掌握了,下一章我们就来 创建第一个 Flutter 应用!


由 编程指南 提供

最近更新: 2026/2/3 16:24
Contributors: 王长安
Prev
第2章 - 环境搭建
Next
第4章 - 第一个 Flutter 应用