[Flutter笔记]Isolate

297 阅读1分钟
// isolate-demo.dart
import 'dart:isolate';

Future<void> main(List<String> args) async {
  var receivePort = ReceivePort();
  Isolate.spawn(_entryCallback, {
    'request': 'Initialize',
    'replyTo': receivePort.sendPort,
  });
  var responseMessage = await receivePort.first;
  print('response ${responseMessage['response']}');
}

void _entryCallback(Map initialMessage) {
  print('request ${initialMessage['request']}');
  var receivePort = ReceivePort();
  (initialMessage['replyTo'] as SendPort).send({
    'response': 'Initialized',
    'replyTo': receivePort.sendPort,
  });
}
$ flutter pub run isolate-demo.dart
request Initialize
response Initialized

参考:

深入理解Flutter的Isolate创建过程

深入理解Flutter异步Future机制

[dart-announce] Dart2 Breaking Change: Removing web support for dart:mirrors and dart:isolate

Deprecate dart:isolate on the web

Dart SDK libraries and Flutter for web