TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #539 1.59K
Hola, Amigos! Async/await и Isolate оба помогают держать UI плавным, но решают разные задачи. Сегодня обсудим, что и в каких ситуациях лучше использовать.

Неправильно: async/await для CPU-тяжелой задачи


Future<String> processBigData() async {
final raw = await fetchHugeJson(); // ← I/O — ок
final data = jsonDecode(raw); // ← блокирует UI ~1с
final result = heavyMath(data); // ← ещё ~1с
return result;
}


Правильно и просто: compute()


import 'package:flutter/foundation.dart';

Future<String> processBigData() async {
final raw = await fetchHugeJson(); // сеть — ок

return compute(_heavyWork, raw); // ← выполняется в Isolate
}

String _heavyWork(String json) {
final data = jsonDecode(json);
return heavyMath(data);
}


Когда нужен полный контроль, подойдет Raw Isolate


Future<void> startWorker() async {
final receivePort = ReceivePort();
isolate = await Isolate.spawn(_worker, receivePort.sendPort);
sendPort = await receivePort.first as SendPort;
}

Future<String> doHeavyTask(String input) async {
final response = ReceivePort();
sendPort.send([input, response.sendPort]);
return await response.first as String;
}

static void _worker(SendPort mainPort) async {
final port = ReceivePort();
mainPort.send(port.sendPort);

await for (final msg in port) {
final input = msg[0] as String;
final replyTo = msg[1] as SendPort;
replyTo.send("processed: $input"); // heavy work here
}
}


Разберем по ситуации:

- Блокирует main thread > ~300 мс → compute()
- Просто ждет (network/db) → async/await
- Нужен worker с диалогом → raw Isolate

А ты пользуешься Isolate/compute или решаешь через async/await? Делись опытом ⚙️
  • 👍 10
  • 🔥 5
  • 🤝 2
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →