Sobes.tech
Middle

Даромади бисёрсоҳавии Flutter-ро дар таҷрибаи таҳияатон чӣ гуна мушкилотҳо ба вуҷуд овард?

sobes.tech AI

Ҷавоб аз AI

Масъулоти бо навсозии UI аз isolate-и пасзамина, бастани хати асосӣ (UI thread) бо амалиётҳои дарозмуддат, ҳамоҳангсозии нодуруст дар дастрасӣ ба маълумоти умумӣ байни isolate-ҳо, дархуриҳои хотира бо сабаби идоракунии нодуруст дар портҳо ва паёмҳо.

// Нусхаи бастани хати UI
void longRunningOperation() {
  // Ин амали дарозмуддат UI-ро бастан мекунад, барнома беҷавоб мегардад
  for (int i = 0; i < 1000000000; i++) {
    // Корҳои вазнинро иҷро кунед
  }
}
// Нусхаи фиристодани паём аз isolate-и пасзамина барои навсозии UI
import 'dart:isolate';

void heavyTask(SendPort sendPort) {
  // Корҳои дарозро иҷро кунед...
  String result = "Кору анҷом ёфт!";
  sendPort.send(result); // Натиҷаро баргардонед ба хати UI
}

// Дар хати асосӣ
ReceivePort receivePort = ReceivePort();
Isolate.spawn(heavyTask, receivePort.sendPort);

receivePort.listen((message) {
  // Паём аз isolate-и пасзамина гирифта шуд, метавон UI-ро навсозӣ кард
  print("Гирифт: $message");
});

Барои ҳалли ин мушкилот, фаъолона истифода мешавад Isolate барои иҷрои ҳисобҳои вазнин дар пасзамина бидуни бастани хати UI, инчунин ReceivePort ва SendPort барои мубодилаи бехатарии маълумот байни isolate-ҳо. Ба махсус диққат дода мешавад ба сериализатсия/десериализатсия кардани маълумот ҳангоми интиқол байни isolate-ҳо, зеро онҳо хотираи умумӣ надоранд.