dart的??=运算符

简介: dart的??=运算符

??=是Dart中的null-aware运算符。它的作用是:

如果左边的操作数为null,则将其赋值为右边的操作数;否则保持不变。

其等价于:

a ??= b

相当于:

a = a ?? b
• 1

这意味着,如果a不为null,则a保持原值;如果a为null,则将a赋值为b。

这个运算符在为可能为null的变量设置默认值时非常有用。例如:

String name; // 假设该变量可以为null
name ??= 'Guest';
print(name); // Guest

这里,因为name初值为null,所以会被赋值为’Guest’。

如果name初始就有值,则保持不变:

String name = 'Tom';
name ??= 'Guest';
print(name); // Tom

所以,总结来说,??=运算符为设置默认值提供了一种简洁的语法,特别适用于初始值可能为null的情况。

Flutter开发中,由于我们经常需要处理null值或设置默认值,??=运算符可以让我们的代码更加简洁易读。比如:

  Future<Database?> get database async {
    if(_database == null) {
      _database = await initDb();
    }
    return _database;
  }

直接简写成

Future<Database?> get database async {
    _database ??= await initDb();
    return _database;
  }


相关文章
|
前端开发 API Android开发
Flutter最强大的图表库fl_chart的使用
Flutter最强大的图表库fl_chart的使用
1399 1
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
634 0
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
11月前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
276 4
Flutter状态管理:RxDart,详细介绍
Flutter状态管理:RxDart,详细介绍 RxDart是一个基于Dart语言的响应式编程库,它提供了一套用于处理异步事件序列的工具。在Flutter应用中,RxDart可以很好地用于管理应用状态。
546 0
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
1350 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
网络协议 Ubuntu Linux
|
缓存 索引 Python
Transformers 4.37 中文文档(十六)(1)
Transformers 4.37 中文文档(十六)
341 1
|
存储 缓存 开发框架
Flutter的网络请求:使用Dart进行HTTP请求的技术详解
【4月更文挑战第26天】了解Flutter网络请求,本文详述使用Dart进行HTTP请求
1022 1
|
存储 XML 前端开发
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理
【4月更文挑战第30天】本文介绍了Flutter开发中的网络请求和数据处理。 Flutter开发者可选择http(官方库)或dio(功能更强大)进行网络请求。http库简单易用,dio支持更多功能如拦截器。数据处理涉及JSON和XML解析,数据存储可选SharedPreferences或Hive,数据传递推荐使用InheritedWidget或Provider状态管理库。了解这些知识点能提升Flutter开发效率。
398 0
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理
使用序列化和反序列化函数archivedDataWithRootObject和unarchivedObjectOfClasses的使用和遇到问题及解决方案
使用序列化和反序列化函数archivedDataWithRootObject和unarchivedObjectOfClasses的使用和遇到问题及解决方案
434 0