Sobes.tech
Junior — Middle

Milyen típusú adatokat lehet használni az izolátumok kontextusában történő átadás során?

sobes.tech MI

Válasz az MI-től

Flutterben az izolátumok (isolates) közötti adatok átvitelénél csak olyan adat típusokat lehet használni, amelyek támogatják a sorosítást és biztonságosak az adatok átviteléhez szálak között.

Az izolátumok kontextusában átadható főbb adat típusok:

  • Primitív típusok: int, double, bool, String
  • Listák és térképek, amelyek tartalmazzák a fent említett primitív típusokat (pl. List<int>, Map<String, dynamic>)
  • Olyan objektumok, amelyek megvalósítják a SendPort és ReceivePort interfészeket az üzenetküldéshez

Nem lehet átadni olyan objektumokat, amelyek állapota a kontextustól függ (pl. widgetek, vezérlők, UI hivatkozások), mivel az izolátumok nem osztanak meg memóriát.

Üzenetküldési példa:

// A fő izolátumban
final receivePort = ReceivePort();
Isolate.spawn(isolateEntry, receivePort.sendPort);

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

// Az izolátumban
void isolateEntry(SendPort sendPort) {
  sendPort.send('Szia az izolátumból');
}

Ezért az izolátumok közötti adatok átadásához egyszerű, sorosítható típusokat és üzenet portokat kell használni.