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是一个好的选择。
相关推荐
恋猫de小郭5 小时前
Flutter GenUI 0.9 和 A2UI 0.9 发布,全动动态 UI 支持,AI 在 App 里直出界面
android·flutter·ios
KKei16385 小时前
Flutter for OpenHarmony 学习专注模式APP技术文章
学习·flutter·华为·harmonyos
UnicornDev6 小时前
【Flutter x HarmonyOS 6】挑战功能的业务逻辑实现
flutter·华为·harmonyos·鸿蒙·鸿蒙系统
Lan_Se_Tian_Ma6 小时前
使用Cursor封装Flutter项目基建框架
前端·人工智能·flutter
天天开发6 小时前
Flutter Widget Previewer使用指南:提升开发效率的利器
前端·javascript·flutter
liulian09162 天前
Flutter 网络状态与内容分享库:connectivity_plus 与 share_plus 的 OpenHarmony 适配指南
网络·flutter
KKei16382 天前
Flutter for OpenHarmony 学习视频播放器技术文章
学习·flutter·华为·音视频·harmonyos
KKei16382 天前
Flutter for OpenHarmony 健身计划与运动打卡APP
flutter·华为·harmonyos
KKei16382 天前
Flutter for OpenHarmony 在线考试与自测系统APP技术文章
flutter·华为·harmonyos
liulian09162 天前
Flutter 依赖注入与设备信息库:get_it 与 device_info_plus 的 OpenHarmony 适配指南
flutter