when
Aplica un callback cuando se cumple un predicado; si no, devuelve el valor sin cambios.
Lección
when(predicate, callback, value) es un único condicional
expresado como datos: si predicate(value) es verdadero, el
resultado es callback(value); si no, el resultado es el
propio value, intacto. Se lee muy bien dentro de un callback
de map cuando quieres transformar solo los elementos que lo
necesitan y dejar el resto en paz.
La versión de FxTS puede ampliar el tipo de retorno a una unión
T | R cuando las ramas no coinciden. Dart no tiene tipos
de unión, así que tanto la rama del callback como la de paso
directo deben compartir el mismo tipo T; si de verdad
necesitas tipos de resultado distintos, recurre a
cases, que sí permite que
R difiera del tipo de entrada.
Demo 1 · Fundamentos
Demo 2 · Acotar valores en un pipeline
Pruébalo tú
Ejercicio: usa when para duplicar solo los precios
positivos, dejando los negativos intactos.