Sobes.tech
Junior — Middle

Aké typy údajov je možné použiť pri prenose v kontexte izolátov?

sobes.tech AI

Odpoveď od AI

Počas prenosa dát medzi izolátmi (isolates) vo Flutteri je možné použiť iba typy dát, ktoré podporujú serializáciu a sú bezpečné na prenos medzi vláknami.

Hlavné typy dát, ktoré je možné prenášať v kontexte izolátov:

  • Primitívne typy: int, double, bool, String
  • Zoznamy a mapy obsahujúce vyššie uvedené primitívne typy (napríklad List<int>, Map<String, dynamic>)
  • Objekt, ktorý implementuje SendPort a ReceivePort na výmenu správ

Nie je možné prenášať objekty so stavom závislým od kontextu (napríklad widgety, kontroléry, odkazy na UI), pretože izoláty nesdielajú pamäť.

Príklad odoslania správy:

// V hlavnom izoláte
final receivePort = ReceivePort();
Isolate.spawn(isolateEntry, receivePort.sendPort);

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

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

Preto je na prenos dát medzi izolátmi potrebné používať jednoduché serializovateľné typy a porty správ.