Dart中late

在Dart语言中,late关键字是Dart 2.12及更高版本中引入的一个特性,用于延迟初始化。它主要用于两种场景:非空类型的延迟初始化和显式的懒加载。

非空类型的延迟初始化

在引入空安全特性之后,Dart要求所有的变量在使用前都必须初始化。然而,在某些情况下,我们可能无法在声明变量的同时初始化它,比如依赖于构造函数参数或者需要进行异步操作来获取初始值。这时,late关键字就派上了用场。通过late标记的变量,Dart允许你稍后初始化这个变量,同时确保在第一次使用前已被初始化,否则会抛出异常。

Dart 复制代码
class MyClass {
  late String description;

  void setDescription(String desc) {
    description = desc;
  }
}

显式的懒加载

late还可用于变量的懒加载,即变量在第一次被访问时才进行初始化。这对于初始化开销较大的变量非常有用,可以在确实需要这些变量的时候才去创建它们,从而提高程序的性能。

Dart 复制代码
class MyDatabase {
  late final HeavyDatabase _database = HeavyDatabase();

  HeavyDatabase get database => _database;
}

在这个例子中,_database变量只会在第一次访问database属性时被初始化,而不是在MyDatabase类的实例被创建时。

注意事项

  • 使用late时需要小心,因为如果在变量被正确初始化之前访问它,会抛出LateInitializationError异常。
  • late不应该被用作绕过空安全的手段。确保在第一次访问变量之前已经对其进行了初始化。
  • 对于懒加载的场景,考虑初始化开销和访问频率,决定是否使用late是一个好的选择。
相关推荐
w_y_fan2 小时前
Flutter 滚动组件总结
前端·flutter
醉过才知酒浓3 小时前
Flutter Getx 的页面传参
flutter
火柴就是我1 天前
flutter 之真手势冲突处理
android·flutter
Speed1231 天前
`mockito` 的核心“打桩”规则
flutter·dart
法的空间1 天前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
恋猫de小郭1 天前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
玲珑Felone1 天前
从flutter源码看其渲染机制
android·flutter
ALLIN2 天前
Flutter 三种方式实现页面切换后保持原页面状态
flutter
Dabei2 天前
Flutter 国际化
flutter
Dabei2 天前
Flutter MQTT 通信文档
flutter