Sobes.tech
Junior — Middle

Jaké typy dat lze použít při přenosu v kontextu izolátů?

sobes.tech AI

Odpověď od AI

Při přenosu dat mezi izoláty (isolates) ve Flutteru lze použít pouze datové typy, které podporují serializaci a jsou bezpečné pro přenos mezi vlákny.

Hlavní datové typy, které lze přenášet v kontextu izolátů:

  • Primitivní typy: int, double, bool, String
  • Seznamy a mapy obsahující výše uvedené primitivní typy (například List<int>, Map<String, dynamic>)
  • Objekty, které implementují SendPort a ReceivePort pro výměnu zpráv

Nelze přenášet objekty se stavem závislým na kontextu (například widgety, kontrolery, odkazy na UI), protože izoláty nesdílejí paměť.

Příklad odeslání zprávy:

// V hlavním izolátu
final receivePort = ReceivePort();
Isolate.spawn(isolateEntry, receivePort.sendPort);

receivePort.listen((message) {
  print('Přijato: $message');
});

// V izolátu
void isolateEntry(SendPort sendPort) {
  sendPort.send('Ahoj z izolátu');
}

Proto je pro přenos dat mezi izoláty nutné používat jednoduché serializovatelné typy a porty zpráv.