import 'dart:async'; extension ObjectExtension on T { /// Run [fn] with this, and return this T also(void Function(T obj) fn) { fn(this); return this; } /// Run [fn] with this, and return this Future alsoFuture(FutureOr Function(T obj) fn) async { await fn(this); return this; } /// Run [fn] with this, and return the results of [fn] U let(U Function(T obj) fn) => fn(this); /// Run [fn] with this, and return the results of [fn] Future letFuture(FutureOr Function(T obj) fn) async { return await fn(this); } /// Cast this as U, or null if this is not an object of U U? as() => this is U ? this as U : null; }