import 'dart:async'; import 'dart:isolate'; /// Simple worker that executes functions in a separate isolate. /// Replacement for combine package's CombineWorker. class IsolateWorker { /// Execute a function in a separate isolate and return the result. /// /// Note: The function must be a top-level function or a static method, /// and it cannot capture non-sendable objects from the surrounding scope. Future execute(T Function() computation, {bool allowSyncFallback = false}) async { try { return await Isolate.run(computation); } catch (e) { if (!allowSyncFallback) { rethrow; } return computation(); } } }