Sobes.tech
Junior — Middle

What types of data can be used when passing in the context of isolates?

sobes.tech AI

Answer from AI

In Flutter, when passing data between isolates, only data types that support serialization and are safe for transfer between threads can be used.

The main data types that can be transferred in the context of isolates include:

  • Primitive types: int, double, bool, String
  • Lists and maps containing the above primitives (e.g., List<int>, Map<String, dynamic>)
  • Objects that implement SendPort and ReceivePort for message exchange

Objects with state dependent on context (e.g., widgets, controllers, UI references) cannot be transferred, as isolates do not share memory.

Example of message passing:

// In the main isolate
final receivePort = ReceivePort();
Isolate.spawn(isolateEntry, receivePort.sendPort);

receivePort.listen((message) {
  print('Received: $message');
});

// In the isolate
void isolateEntry(SendPort sendPort) {
  sendPort.send('Hello from isolate');
}

Thus, to transfer data between isolates, you should use simple serializable types and message ports.

What types of data can be used when passing in the… - sobes.tech