futures<T> function

Widget futures<T>(
  1. BuildContext context, {
  2. required Iterable<FutureOr<T>?> waitFor,
  3. String? observerName,
  4. String? debugName,
  5. bool sliver = false,
  6. bool awaitAll = false,
  7. required Widget builder(
    1. BuildContext context,
    2. List<T>? resolved
    ),
  8. Widget errorBuilder(
    1. BuildContext context,
    2. dynamic error
    )?,
  9. Widget spinner(
    1. BuildContext context
    )?,
})

Shorthand for FutureBuilder - waits for multiple futures

Implementation

Widget futures<T>(BuildContext context,
    {required Iterable<FutureOr<T>?> waitFor,
    String? observerName,
    String? debugName,
    bool sliver = false,
    bool awaitAll = false,
    required Widget builder(BuildContext context, List<T>? resolved),
    Widget errorBuilder(BuildContext context, error)?,
    Widget spinner(BuildContext context)?}) {
  return future<List<T>>(
    context,
    key: debugName,
    waitFor: Future.wait<T>(
        waitFor.mapIndexed(((o, idx) => Future.value(o).then((_) {
              _log.info("$debugName: completed $idx");
              return _;
            })) as Future<T> Function(FutureOr<T>?, int)),
        eagerError: true),
    sliver: sliver,
    observerName: observerName,
    builder: (context, resolved) {
      _log.finer(
          "futures: of ${uncapitalize(resolved?.runtimeType.toString() ?? "null")} changed");
      return builder(context, resolved);
    },
    errorBuilder: errorBuilder,
    spinner: spinner,
  );
}