predicates

Una pequeña familia de comprobaciones de tipo y de valor, disponibles como funciones que se pasan tal cual a filter, takeWhile y compañía.

bool isNull(Object? a) bool isNotNull(Object? a) bool isNil(Object? a) // == isNull; Dart has no separate `undefined` bool isBool(Object? a) bool isNum(Object? a) bool isString(Object? a) bool isDateTime(Object? a) bool isList(Object? a) bool isMap(Object? a)

Lección

En Dart del día a día escribirías simplemente a is String: es lo idiomático y nada de aquí lo sustituye. Estas funciones existen por un motivo muy concreto: el operador is de Dart no se puede pasar como valor de función, pero filter, takeWhile, find y compañía esperan un bool Function(A). filter(isString, mixedList) se lee mejor que filter((a) => a is String, mixedList), y de eso va toda esta página.

isNil es un port directo de la comprobación «es null o undefined» de FxTS; como Dart colapsa ambos en null, es idéntica byte a byte a isNull. Existen tres nombres más solo por paridad con FxTS, marcados como @Deprecated: isUndefined (en Dart no hay undefined, así que es isNull a secas), isArray (el Array de JS → List en Dart, así que es isList) e isObject (el objeto plano de JS → Map en Dart, así que es isMap). En código nuevo usa el nombre no obsoleto; los alias están ahí para que las llamadas portadas sigan compilando.

Demo 1 · Predicados listos para filtrar

Demo 2 · isNil y los alias obsoletos

Pruébalo tú

Ejercicio: usa isNotNull para filtrar el null de row.

Relacionado: filter — el sitio habitual donde se enchufan · isEmpty — una comprobación de valor, no de tipo · compact — descarta los nulls de un iterable · matches — un predicado de forma, no de tipo