IsolateUtils

IsolateUtils is a useful package for you who want to make and manage Isolate. It is based on dart:isolate so it only support iOS and Android.

It's like compute(): Spawn an isolate, run callback on that isolate, passing it message, and (eventually) return the value returned by callback. But it not top-level constant so you can create multiple Isolates at the same time.

Usage

Create a IsolateUtils:

final IsolateUtils _isolateUtils = IsolateUtils();

Start

Create and start an isolate:

final _value = await IsolateUtils.createAndStart(_testFunction, 'Hello World');
print(_value);

OR

  1. Create an isolate:
IsolateUtils _isolateUtils = await IsolateUtils.create(_testFunction, 'Hello World');
  1. Start and get the value returned by _testFunction
final _value = await _isolateUtils.start();
print(_value);

Pause a running isolate

_isolateUtils.pause();

Resume a paused isolate

_isolateUtils.resume();

Stop and dispose a an isolate

_isolateUtils.stop();

Example test function

static Future<String> _testFunction(String message) async {
    Timer.periodic(Duration(seconds: 1), (timer) => print('$message - ${timer.tick}'));
    await Future.delayed(Duration(seconds: 30));
    return '_testFunction finish';
  }

Libraries

isolate_utils