Operadores ?? y ?
Dart tiene 2 operadores que permiten simplificar el uso del if-else.
El primero es el operador ? y funciona de la siguiente forma:
condicion ? resultado1 : resultado2. Si la condición es true evalúa el resultado1 si la condición
es false evalúa él resultado2. Por ejemplo sí tenemos el siguiente código usando if-else:
var edad = 17;
if (edad >= 18) {
print('Es mayor de edad');
} else {
print('Es menor de edad');
}
Si utilizamos el operador ? quedaría de la siguiente forma:
edad >=18 ? print('Es mayor de edad') : print('Es menor de edad');
También podemos asignar el resultado a alguna variable:
String resultado = edad >=18 ? 'Es mayor de edad' : 'Es menor de edad';
El segundo operador es él ?? y funciona de la siguiente forma:
resultado1 ?? resultado2. Si resultado1 no es nulo regresa su valor de lo contrario regresa él resultado2.
Por ejemplo sí tenemos el siguiente código usando if-else:
String? nombre = 'Yayo';
if (nombre == null) {
print('El nombre es nulo');
} else {
print(nombre);
}
Si utilizamos el operador ?? quedaría de la siguiente forma:
String? nombre = 'Yayo';
print( nombre ?? 'El nombre es nulo ');
En el fragmento de código anterior imprime en consola Yayo porque la variable nombre no es nula.
Puedes correr el código en DartPad y ver el funcionamiento:
