unless

Aplica un callback cuando el predicado no se cumple; en caso contrario devuelve el valor sin tocar.

T unless<T>(bool Function(T) predicate, T Function(T) callback, T value)

Lección

unless es when con la condición invertida: unless(predicate, callback, value) ejecuta callback(value) cuando predicate(value) es false, y devuelve value intacto cuando el predicado se cumple. Se lee muy bien para «pon un valor por defecto salvo que esta condición ya se cumpla»: validación, relleno de datos que faltan, normalización de casos límite.

Como en when, en Dart ambas ramas deben devolver el mismo tipo T (no hay tipos de retorno unión), y no existe forma encadenable — es una función data-first normal y corriente.

Demo 1 · Fundamentos

Demo 2 · Rellenar datos que faltan

Pruébalo tú

Ejercicio: usa unless para poner 'general' en cualquier etiqueta que no se haya establecido.

Relacionado: when — el hermano de unless con la condición inversa · cases — varios predicados en lugar de uno solo · throwIf — lanza en vez de sustituir el valor · compact — descarta los valores ausentes en lugar de rellenarlos