Flutter Pulse
515 subscribers
324 photos
705 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
🔥 Shared Memory Multithreading в Dart – новый уровень многопоточности! 🔥

🚀 Dart становится ближе к низкоуровневым языкам! В новом предложении по Shared Memory Multithreading разработчики предлагают решения, которые закроют давние проблемы:

Многопоточность без ограничений isolate-модели 🧵
Глубокая интеграция с C/C++, Swift, Kotlin и другими языками 🔗
Возможность создавать shared state между изолятами 🏗
Упрощённая работа с потокозависимыми API 📡

💡 Теперь Dart сможет гораздо эффективнее работать с многопоточным кодом, оптимизируя производительность, снижая издержки на сериализацию данных и обеспечивая нативную поддержку работы с многопоточной средой!

📌 Что это даст?
🔹 Возможность вызывать Dart-код из нативного кода без привязки к конкретному изоляту
🔹 Оптимизированную работу dart:io за счёт переноса его реализации с C++ на Dart
🔹 Улучшенное взаимодействие с платформенными API, которые требуют вызова на главном потоке

🛠 Roadmap
На первом этапе планируется тестирование shared-полей и shared-изолятов, а затем расширение возможностей Dart для многопоточной работы!

🔗 Подробнее:
📜 Proposal: https://dart-dev.web.app/resources/breaking-changes#3-7-0
📜 Changelog: https://dart.googlesource.com/sdk/+/stable/CHANGELOG.md#3_7_0
📜 Спасибо за новость: https://t.me/madteacher_channel/631
💬 Как вам такие перспективы? Делимся мнением в комментариях!

#flutter #flutterpulse #dart #multithreading 🚀
🔥6
Как использовать Isolates во Flutter

Привет, разработчики Flutter! 👋 Сегодня мы рассмотрим одну из ключевых тем в разработке высокопроизводительных приложений — использование Isolates для выполнения фоновых задач. Isolates позволяют выполнять тяжелые вычисления в отдельных потоках, не блокируя основной поток приложения. 📈

Зачем нужны Isolates?

Isolates помогают избежать зависания интерфейса пользователя при выполнении сложных операций, таких как обработка больших объемов данных или сложные вычисления. Они позволяют распределить нагрузку между несколькими потоками, обеспечивая плавную работу приложения. 💻

Пример использования Isolates

Давайте рассмотрим пример, как отправлять и получать данные из Isolates. В этом примере мы создадим Isolate и организуем двустороннюю связь между основным потоком и Isolate.



static void _update(String data) async {
// создаем канал ответа для основного потока
var _toIsolate = ReceivePort();
// отправляем этот канал ответа
data.sendPort.send(_toIsolate.sendPort);
// слушаем данные, отправленные из основного потока, чтобы их обработать
_toIsolate.listen((message) {
// выполняем тяжелую работу здесь
data.sendPort.send("Мой потрясающий результат...");
});
}





Isolate? isolate;
StreamController<String>? _streamController;
Stream<String>? _stream;

void runIsolate() {
// создаем канал связи для ответов Isolate
var fromIsolate = ReceivePort();
// контроллер потока для отправки данных и отображения их в UI
_streamController = StreamController<String>();
// первый канал ответа — это канал связи, по которому мы можем снова отправлять данные
fromIsolate.listen((data) {
if (data is SendPort) {
_toIsolate = data;
}
// обработанные данные (здесь это String, но можно использовать и другие типы
// или классы с базовыми типами)
if (data is String) {
_streamController!.sink.add(data);
}
});
// запускаем Isolate
Isolate.spawn(_update, initialData).then((value) => isolate = value);
// используем этот поток, чтобы слушать данные из нашего UI или откуда угодно еще
_stream = _streamController!.stream.asBroadcastStream();
// не забудьте закрыть его, когда закончите
}



В этом примере мы создаем Isolate и организуем двустороннюю связь между основным потоком и Isolate. Это позволяет выполнять тяжелые задачи в фоновом режиме и получать результаты в основном потоке. 🔄

Не забудьте остановить Isolate, когда закончите работу с ним, чтобы избежать утечек памяти. 💡

Оцените новую рубрику и напишите в комментариях, какие темы вам интересны! 👇

Все подобные новости можно найти по хэштегу #FlutterPulseTips

#flutter #dart #flutterpulse #FlutterPulseTips #mobiledevelopment #appdevelopment #performanceoptimization #isolates #concurrency #multithreading
👍3