import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:np_collection/np_collection.dart'; extension IterableExtension on Iterable { Future> computeAll(ComputeCallback callback) async { final list = asList(); if (list.isEmpty) { return []; } else { return await compute( _computeAllImpl, _ComputeAllMessage(callback, list)); } } } class _ComputeAllMessage { const _ComputeAllMessage(this.callback, this.data); final ComputeCallback callback; final List data; } Future> _computeAllImpl(_ComputeAllMessage message) async { final result = await Future.wait( message.data.map((e) async => await message.callback(e))); return result; }