Dart面试题更新 2026-08-05

请解释 Dart 中的空安全特性,并阐述在实际开发中应当如何使用它?

编码实现技术原理DartFlutter

考察说明

考查对 Dart 空安全特性的理解及实际应用能力。

回答思路

  1. 【回答框架 1】空安全是 Dart 2.12 引入的编译期特性,旨在消除空引用异常。其核心在于类型系统区分可空类型和不可空类型,如 String? 表示可能为 null,String 则不能为 null。编译器会在编译期检查潜在的空值问题,提前发现错误。
  2. 【回答框架 2】使用时,默认声明的变量不可为空,必须初始化。若需允许 null,则类型后加问号。访问可空变量前需进行空检查,如使用 if 判断、? 条件调用、?? 提供默认值、! 断言非空。
  3. 【回答框架 3】还提供 late 关键字用于延迟初始化,以及 late final 用于延迟且只赋值一次。此外,空安全与类型提升配合,可在检查后自动将可空类型提升为不可空,以便安全访问。
  4. 【关键点 1】空安全使类型系统区分可空与不可空,编译期防止空引用。
  5. 【关键点 2】类型后加 ? 允许 null,不加则禁止,需初始化。
  6. 【关键点 3】使用 ?.、??、! 等运算符处理可空值。
  7. 【关键点 4】late 关键字用于延迟初始化,但需确保使用前赋值。
  8. 【关键点 5】空安全已在 Dart 2.12+ 默认启用。
  9. 【易错点 1】滥用 ! 断言可能导致运行时空错误。
  10. 【易错点 2】误用 late 变量未初始化就访问,同样抛出异常。
  11. 【易错点 3】过度使用 ?. 可能使代码冗长,应结合逻辑简化。