学习 Dart 编程语言:初学者指南

发布: (2025年12月14日 GMT+8 03:10)
8 min read
原文: Dev.to

Source: Dev.to

Dart 正在因跨平台移动应用而人气飙升,尤其是 Flutter 生态多年来的爆炸式增长。

本文用 6 分钟的阅读时间解释 Dart 的核心要点。无需任何先前经验:只需复制粘贴代码片段并进行实验。阅读完后,你将掌握 Dart 编程语言的核心。

Introduction: Why Dart Rules Mobile Dev

如果你正准备使用 Flutter 开发移动应用,Dart 是你的优化强力引擎:类型安全、空安全,并编译为原生代码以实现丝般顺滑的性能。我们将覆盖变量、运算符、字符串、条件语句、集合、for 循环、函数以及空安全——这些是构建动态 UI 和 API 驱动应用的核心工具箱。打开 DartPad.dev 并跟着练习。准备好了吗?开始编码吧!

2025 Trend Tie‑In: 随着 Firebase ML 等 AI 工具对快速数据处理的需求,这些基础能够回答诸如 “如何在 Flutter 中安全解析 JSON?” 和 “自适应布局的高效列表实现?” 等热门问题。

Variables: The Building Blocks Everyone Trips On

变量用于保存应用的数据,例如用户名或分数。Dart 兼顾类型安全与灵活性:var 自动推断类型,final 在运行时只能赋值一次,const 在编译时锁定常量值。

void main() {
  var name = 'Samuel';   // Inferred as String
  final age = 1;         // Can't reassign after init
  const pi = 3.14;       // Immutable from compile time
  print('$name is $age years old (pi: $pi)');
}

Pro Tip: final 适用于 API 获取(运行时),const 适用于硬编码的 UI 常量。在你的第一个 Flutter 应用中,final 能防止有状态组件中的重新赋值错误。

Operators: Crunch Numbers and Logic Like a Pro

运算符用于处理数学、比较和决策。

void main() {
  int a = 10, b = 3;
  print(a + b);               // 13
  print(a % b);               // 1 (remainder)
  print(a > b && b != 0);     // true
}

这些是游戏逻辑或表单校验的核心——移动开发的日常必备。空感知运算符将在空安全章节中介绍。

Trend Alert: 当应用集成 AI(例如用户输入过滤)时,逻辑运算可以大幅缩短处理时间,降低设备电池消耗。

Strings: Mastering Text for Dynamic UIs

字符串用于管理文本:单引号/双引号用于普通字符串,三引号用于多行。使用 $var${expression} 进行插值。

void main() {
  String greeting = 'Hello, Dart!';
  String multiline = '''
  This is
  a poem.
  ''';
  print('$greeting World: ${2 + 2}');  // Hello, Dart! World: 4
  print(multiline);
}

使用 \ 转义引号。字符串在 Flutter 的调试控制台打印以及全局化应用的本地化中都非常重要。

Conditionals: Branching for Smarter App Logic

条件语句控制程序流向:ifelse ifelse 为基础;三元运算 condition ? true : false 用于简写。switch 处理多分支情况。

void main() {
  int score = 85;
  if (score >= 90) {
    print('A+');
  } else if (score >= 80) {
    print('B');  // Runs here
  } else {
    print('Keep grinding');
  }

  // Ternary example
  String grade = score >= 90 ? 'A' : 'B';
  print(grade);
}

Switch 示例:

switch (score ~/ 10) { // Integer division
  case 9:
    print('Great!');
    break;
  default:
    print('Try again');
}

这些是认证流程或自适应 UI 的核心——Flutter 的条件渲染(如 Visibility 小部件)正是基于此实现的。

Tip: 对布尔值不要写 == true,Dart 的隐式转换已经足够。

Collections: Lists and Maps for Data Power

集合用于组织数据:List(有序数组)和 Map(键值对)。使用 ... 进行展开合并。

void main() {
  List fruits = ['apple', 'banana'];
  fruits.add('cherry');               // Now 3 items
  print(fruits[1]);                   // banana (0‑indexed)

  Map scores = {'Course': 100, 'User': 95};
  scores['Newbie'] = 80;
  print(scores['Course']);            // 100

  // Spread example
  List more = [...fruits, 'date'];
}

列表在待办事项类应用中大放异彩;Map 用于解析 JSON API——为 Flutter 的 ListView.builder 提供数据源。

Pro Tip: 索引要谨慎(从 0 开始),以避免在动态信息流中出现崩溃。

For Loops: Iterating Efficiently

for 循环用于重复执行:经典计数器或 for‑in 用于遍历集合。

void main() {
  // Classic for‑loop example (original snippet incomplete)
  // for (int i = 0; i < /* condition */; i++) {
  //   // ...
  // }

  // For‑in loop
  var nums = [1, 2, 3];
  for (var num in nums) {
    print(num * 2);     // 2,4,6
  }
}

在 Flutter 开发中坚持使用这些循环——while 循环稍后再介绍。使用 length - 1 可避免常见的越界错误。

Trend Tip: 优化循环可以降低电池消耗;在真实设备或模拟器上测试,以确保移动端性能。

Functions: Reusable Code for Modular Apps

函数用于封装逻辑。可以使用位置可选参数 ([]) 或命名可选参数 ({}),以及箭头语法简化代码。

int add(int a, int b) => a + b; // Arrow shorthand

void greet([String? name = 'World']) { // Positional optional
  print('Hi, $name!');
}

void main() {
  print(add(5, 3));   // 8
  greet('Dart');      // Hi, Dart!
  greet();            // Hi, World!
}

命名示例:greet(name: 'Flutter').

Pro Tip: 默认值可以防止用户输入导致的空参数问题。

Nullability: The Crash‑Proof Shield

Dart 自 2.12 起进入空安全时代,引入 ? 表示可空,! 表示断言非空,?? 表示回退值,late 用于延迟初始化。

String? nullableName;                     // Can be null
String name = nullableName ?? 'Default'; // Safe default

void main() {
  int? maybeNum = null;
  // print(maybeNum! + 1); // Crashes if null—avoid!
  print(maybeNum ?? 42); // 42 if null
}

空安全消除了 Flutter 部署中大量的运行时错误。

Hot Trend: 空安全让 Dart 成为可靠移动开发的首选语言,尤其在配合异步 API 调用时更显优势。

Conclusion: Level Up to Flutter Mastery

你已经掌握了 Dart 的核心概念——现在可以在 DartPad 中动手练习,获得实战经验。

Top 5 Mobile Dev Questions This Answers (2025 Trends)

  1. Nulls in APIs? – 查看 Nullability 部分(Firebase 集成)。
  2. Efficient data lists? – 集合 + 循环用于动态 UI。
  3. Reusable UI logic? – 函数实现组件模块化。
  4. Text for global apps? – 字符串用于国际化(i18n)。
  5. Conditional layouts? – 条件语句用于不同屏幕的自适应布局。

你的第一个 Dart 项目是什么?在下方分享你的想法吧! 🚀

Back to Blog

相关文章

阅读更多 »