Какие?? двойные знаки вопроса в дартс?

Следующая строка кода имеет два знака вопроса:

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

В чем смысл?

Ответ 1

?? Оператор двойного знака вопроса означает "если ноль". Возьмите, к примеру, следующее выражение.

String a = b ?? 'hello';

Это означает, что a равно b, но если b равно нулю, a равно 'hello'.

Другой связанный оператор это ??=. Например:

b ??= 'hello';

Это означает, что если b равно нулю, тогда установите его равным hello. В противном случае не меняйте это.

Ссылка

термины

В новостях о выпуске Dart 1.12 в совокупности упоминаются следующие операторы, как "ноль":

  • ?? - если нулевой оператор
  • ??= - присвоение с нулевым значением
  • x?.p - нулевой доступ
  • x?.m() - нулевой вызов метода