Sobes.tech
Junior — Middle

Koje vrste podataka se mogu koristiti prilikom prenosa u kontekstu izolata?

sobes.tech АИ

Одговор од АИ

При преносу podataka između izolata (isolates) u Flutter-u, mogu se koristiti samo oni tipovi podataka koji podržavaju serializaciju i sigurni su za prenos između niti.

Glavni tipovi podataka koji se mogu preneti u kontekstu izolata:

  • Primitivni tipovi: int, double, bool, String
  • Liste i mape koje sadrže gore navedene primitivne tipove (npr. List<int>, Map<String, dynamic>)
  • Objekti koji implementiraju SendPort i ReceivePort za razmenu poruka

Nije moguće preneti objekte sa stanjem koje zavisi od konteksta (npr. widgeti, kontroleri, UI referencije), jer izolati ne dele memoriju.

Primer slanja poruke:

// U glavnom izolatu
final receivePort = ReceivePort();
Isolate.spawn(isolateEntry, receivePort.sendPort);

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

// U izolatu
void isolateEntry(SendPort sendPort) {
  sendPort.send('Zdravo iz izolata');
}

Stoga, za prenos podataka između izolata, treba koristiti jednostavne serializabilne tipove i portove poruka.