La siguiente línea de código tiene dos signos de interrogación:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
¿Cuál es el significado?
El ??operador de doble signo de interrogación significa "si es nulo". Tome la siguiente expresión, por ejemplo.
String a = b ?? 'hello';
Esto significa aigual b, pero si bes nulo, entonces aes igual 'hello'.
Otro operador relacionado es ??=. Por ejemplo:
b ??= 'hello';
Esto significa que si bes nulo, configúrelo igual a hello. De lo contrario, no lo cambie.
Referencia
Condiciones
Las noticias del lanzamiento de Dart 1.12 se referían colectivamente a los siguientes operadores con reconocimiento de nulos :
?? - si es operador nulo??= - asignación con reconocimiento de nulosx?.p - acceso nulox?.m() - invocación de método nulo
?ya está siendo utilizado por el operador ternario:String a = b == true ? 'x' : 'y';. Lo que el operador if-null resulta ser solo una abreviatura de una verificación ternaria nula comoString a = a == null ? 'hello : a;.?se usa para el operador ternario de la misma manera en PHP, y hay atajos como en lugar de$a = $b === true ? $b : 'y'que puede escribir$a = $b === true ?: 'y'o en lugar de$a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'