Flutter 系列教程:Dart 语言快速入门 (上)

503 阅读2分钟

Dart 是 Flutter 背后的编程语言,它是一门现代化、面向对象、支持强类型的语言,语法简洁,学习起来比 Java / C++ 轻松很多。

今天我们会学习:

  1. 变量声明与命名规则
  2. 常用数据类型
  3. 运算符
  4. 流程控制语句

运行方式:

  • 你可以直接在 Flutter 项目的 lib/main.dart 中运行测试代码
  • 也可以去 DartPad 在线运行(无需安装)

1. Dart 变量声明

在 Dart 中,每个变量都必须有一个类型。Dart 是类型安全的语言,但类型可以推断(有点像 JavaScript 的 var,但更安全)。

常用声明方式

void main() {
  // 方式 1:显式类型
  String name = 'Tom';
  int age = 20;
  double price = 19.99;

  // 方式 2:var(自动推断类型)
  var city = 'Beijing'; // 推断为 String
  var year = 2024; // 推断为 int

  // 方式 3:dynamic(动态类型,不安全,但灵活)
  dynamic anything = 'Hello';
  anything = 123; // OK,但不建议太频繁使用

  // 方式 4:final(只能赋值一次,运行时确定值)
  final country = 'China';
  // country = 'USA'; // ❌ 错误,不能再次赋值

  // 方式 5:const(常量,编译时就确定值)
  const PI = 3.14159;

  print('$name, $age 岁, 来自 $city, 国家是 $country, π=$PI');
}

区别总结:

声明方式类型确定时间是否可变使用场景
var编译时推断一般变量
显式类型 String/Int编译时类型必须明确的场景
dynamic运行时需要临时改变类型时
final运行时赋值运行中确定一次值(如时间戳)
const编译时赋值永远不变的常量

2. 常用数据类型

Dart 基本类型都是类对象(即一切皆对象),常用的有:

  • int:整数
  • double:浮点数
  • String:字符串
  • bool:布尔类型
  • List:列表/数组
  • Map:键值对/哈希表
  • Set:集合(无序、不重复)

简单示例

void main() {
  // 数字类型
  int a = 5;
  double b = 3.2;
  print(a + b); // 8.2

  // 字符串
  String name = 'Alice';
  String greeting = 'Hello, $name'; // 插值
  print(greeting);

  // 布尔类型
  bool isOpen = true;
  print('Is open: $isOpen');

  // 列表 List
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  fruits.add('Mango');
  print(fruits);

  // Map(字典)
  Map<String, int> scores = {
    'Tom': 90,
    'Jerry': 85,
  };
  print(scores['Tom']); // 输出 90

  // Set(不重复)
  Set<int> nums = {1, 2, 2, 3};
  print(nums); // {1, 2, 3}
}

3. 运算符

Dart 支持常见的算术、比较、逻辑与赋值运算,还增加了一些方便的语法糖。

算术运算符

void main() {
  int x = 7;
  int y = 3;

  print(x + y); // 加 10
  print(x - y); // 减 4
  print(x * y); // 乘 21
  print(x / y); // 除 2.333...
  print(x ~/ y); // 整除 2
  print(x % y); // 取余 1
}

比较运算符

void main() {
  print(5 > 3);   // true
  print(5 < 3);   // false
  print(5 >= 5);  // true
  print(5 == 5);  // true
  print(5 != 4);  // true
}

逻辑运算符

void main() {
  bool a = true;
  bool b = false;

  print(a && b); // 与 false
  print(a || b); // 或 true
  print(!a);     // 非 false
}

空安全 & 合并运算符

Dart 从 2.12 开始支持 空安全

void main() {
  String? name; // ? 表示允许为空
  print(name ?? '默认值'); // name 为 null 时用默认值

  name = 'Bob';
  print(name ?? '默认值'); // 输出 Bob
}

4. 流程控制语句

if / else

void main() {
  int score = 85;

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

switch

void main() {
  String grade = 'B';

  switch (grade) {
    case 'A':
      print('非常好');
      break;
    case 'B':
      print('良好');
      break;
    case 'C':
      print('及格');
      break;
    default:
      print('成绩未知');
  }
}

for 循环

void main() {
  for (int i = 1; i <= 5; i++) {
    print('数字 $i');
  }
}

for-in 遍历

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Mango'];

  for (var fruit in fruits) {
    print(fruit);
  }
}

while

void main() {
  int i = 0;
  while (i < 3) {
    print('循环 $i');
    i++;
  }
}

do-while

void main() {
  int i = 0;
  do {
    print('执行 $i');
    i++;
  } while (i < 3);
}

完整可运行代码示例

你可以直接复制以下代码到 Flutter 项目的 lib/main.dartDartPad 来测试。

// Dart 基础入门示例
void main() {
  // ===== 变量声明 =====
  String name = 'Alice';
  var city = 'Shanghai';
  dynamic anything = 42;
  final country = 'China';
  const PI = 3.14;

  print('$name 来自 $city, 国家: $country, π=$PI');

  // ===== 数据类型 =====
  int age = 18;
  double price = 99.99;
  bool isOpen = true;
  List<String> fruits = ['Apple', 'Banana'];
  Map<String, int> scores = {'Tom': 90, 'Jerry': 80};
  Set<int> numbers = {1, 2, 3, 3}; // 自动去重

  print(fruits);
  print(scores);
  print(numbers);

  // ===== 运算符 =====
  int a = 7, b = 3;
  print(a + b); // 10
  print(a ~/ b); // 整除 2
  print(a % b); // 1

  String? nickName; // 允许为空
  print(nickName ?? '未命名');

  // ===== 流程控制 =====
  if (age >= 18) {
    print('成年');
  } else {
    print('未成年');
  }

  for (var fruit in fruits) {
    print(fruit);
  }

  switch (city) {
    case 'Shanghai':
      print('魔都');
      break;
    default:
      print('其他城市');
  }
}

你现在已经知道如何在 Dart 中声明变量、使用数据类型、运算符以及流程控制了,这是学习 Flutter 的第一块编程基石。

📌 下一篇我们会进到 Dart 语言快速入门 (下):函数、类、异步编程 Future/async/await,你会明白 Flutter 中 UI 更新背后的逻辑。