spawn<TArg, TResult> static method

Future<KIsolateContinuous<TArg, TResult>> spawn<TArg, TResult>(
  1. Future<void> initialize(
    1. void registerHandler(
      1. void (
        1. TArg arg,
        2. void respond(
          1. TResult
          )
        )
      )
    ), {
  2. RootIsolateToken? rootIsolateToken,
  3. int maxQueueSize = kDefaultMaxQueueSize,
  4. int agingThreshold = 10,
})

Spawns and initialises a persistent isolate worker.

initialize runs inside the new isolate. It must call registerHandler exactly once before returning. Any Flutter platform-channel access inside initialize requires rootIsolateToken.

Note: avoid calling rootBundle or platform channels in initialize before rootIsolateToken has been applied — the entry point applies the token as the very first step before invoking initialize.

Implementation

static Future<KIsolateContinuous<TArg, TResult>> spawn<TArg, TResult>(
  Future<void> Function(void Function(void Function(TArg arg, void Function(TResult) respond)) registerHandler)
  initialize, {
  RootIsolateToken? rootIsolateToken,
  int maxQueueSize = kDefaultMaxQueueSize,
  int agingThreshold = 10,
}) async {
  final inst = KIsolateContinuous<TArg, TResult>._(maxQueueSize: maxQueueSize, agingThreshold: agingThreshold);
  await inst._init(initialize, rootIsolateToken: rootIsolateToken);
  return inst;
}