以下代码行有两个问号:

final myStringList = prefs.getStringList('my_string_list_key') ?? [];

这是什么意思?

推荐答案

??双问号运算符表示"if null".以下面的表达式为例.

String a = b ?? 'hello';

这意味着a等于b,但如果b为NULL,则a等于'hello'.

另一个相关操作员是??=.例如:

b ??= 'hello';

这意味着如果b为NULL,则将其设置为等于hello.否则,不要更改它.

Reference

Terms

Dart 1.12 release news人统称为null-aware operators人:

  • ??——如果为null运算符
  • ??=--支持空的分配
  • x?.p--支持空的访问
  • x?.m()--支持空的方法调用

Dart相关问答推荐

如何在flutter中管理switch小部件的原生外观

什么时候在 Dart 中使用interfaces接口?

AngularDart 可以直接路由到组件吗?

Dart中有没有类似python 字典(dictionary) struct ?

Dart 1.8 中的异步/等待功能

InheritedWidget - 在 navigator.push 之后在 null 上调用 getter

在Flutter中解析 JSON 到 Map

从列表中删除项目后更新 UI

Google Dart支持mixins吗?

有没有可能用Flatter摄像头插件播放视频?

如何在DartPad中导入库?

如何在 Flutter 中管理 Firebase 身份验证状态?

如何在flatter中读取本地json导入?

你如何在 Dart 中将月份的日期格式化为11th、21st或23rd?

Flutter/Dart Uri 没有在 URL 中转义冒号:

如何判断 Dart NNBD 中的泛型类型是否可以为空?

如何从 JavaScript 调用 Dart 函数

我们如何在 Dart 中删除一个对象?

Dart 中的异步可迭代映射

如何使用 Dart 构建枚举?