Flutter Pulse
1K subscribers
605 photos
1 file
1.67K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Асинхронное программирование в Dart и его применение во Flutter-приложениях
Асинхронное программирование - это мощный инструмент, который позволяет выполнять долгие операции без блокировки основного потока и "замораживания" интерфейса 📊. В статье мы рассмотрим ключевые инструменты асинхронности Dart: Future, async/await и Stream 🌟.

Future представляет собой отложенное вычисление, которое завершится либо успешным результатом, либо ошибкой 🤔. Async/await - это синтаксический сахар, который делает асинхронный код более читаемым и "линейным" 📈. Stream предоставляет последовательность значений (событий), поступающих со временем 📊.

Также статья затрагивает тему многопоточности с помощью Isolates 🌐. Isolates - это механизм многопоточности в Dart, который позволяет выполнять код параллельно в разных потоках 🔄. Изоляты не разделяют память, а взаимодействие происходит только через передачу сообщений 📝.

Читать здесь: ссылка


FlutterPulse — канал о мире Flutter!

#flutter #dart #flutterpulse #flutterpulsehabr #асинхронноепрограммирование #многопоточность #Isolates #Future #asyncawait #Stream
👍1
Async/await и Isolate в Flutter: не путайте ожидание с работой 🚀
Когда ваше приложение тормозит, первая мысль: «нужно вынести это в отдельный поток». В Flutter эта мысль часто выливается в async/await или Isolate. Но это не взаимозаменяемые вещи, а инструменты для разных задач 🤔. И если перепутать, можно получить либо бесполезный код, либо вечно зависающий UI 😱.

Главное заблуждение: async/await сам по себе не переносит выполнение в другой поток. Он просто дает удобный способ работать с асинхронными операциями, которые уже неблокирующие по своей природе: запросы к сети, чтение с диска, ожидание таймера 🕒.

Для операций ввода-вывода async/await достаточно 📁. Сеть, базы данных, файловая система - все это уже асинхронно на уровне платформы. Достаточно дождаться результата, и UI останется отзывчивым 📊.

Но как только появляются вычисления, которые грузят процессор - парсинг большого JSON, обработка изображений, сложные математические расчеты, - async/await перестает помогать 🤯. Здесь нужен настоящий параллелизм. Isolate запускает код в отдельном потоке (или даже ядре) и не трогает основной 💻.

Самый простой способ - compute(). Он берет функцию и данные, запускает их в изоляте и возвращает результат 📈. Идеально для разовых тяжелых задач.

Если нужно постоянное взаимодействие с фоновым процессом, например, обработка потока данных или долгая работа с промежуточными результатами - придется использовать Raw Isolate 📝. Там уже ручное управление портами и сообщениями, но зато полный контроль.

Итак, что выбрать?
🔵 Ждете ответ от сети или диска? async/await.
🔵 Нужно один раз обработать большой кусок данных? compute().
🔵 Есть долгий фоновый процесс с обменом сообщениями? Raw Isolate.
🔵 Пытаетесь ускорить вычисления, просто добавив async? Бесполезно, почитайте заново 📚.

Вывод: Async/await и Isolate не конкуренты, а партнеры 🤝. Первый отвечает за ожидание, второй - за параллельное выполнение. Смешивать их нужно осознанно, а не по принципу «чтоб не тормозило» 🚫.

Полную новость читайте здесь.

FlutterPulse — канал о мире Flutter!

#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #asyncawait #isolate #mobiledevelopment #programming