Flutter Pulse
1.01K subscribers
771 photos
1 file
2.07K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Самые лучшие обновлённые пакеты за последние 24 часа

devtools_shared 3.0.0 — общий пакет для DevTools, DDS и работы с JSON-дампами памяти (HeapSample, HeapSpace, AdbMemoryInfo).
🔹 Главное в 3.0.0: расширения разделены на две библиотеки — devtools_extensions.dart (без dart:io) и devtools_extensions_io.dart (с dart:io). Версионирование теперь отделено от devtools_app.
👍 Лайки: 21, 📥 Скачиваний: 5.59M
pub.dev/packages/devtools_shared

flutter_foreground_task 10.0.0 — плагин для запуска foreground-сервисов на Android (и ограниченно на iOS): фоновые задачи, двусторонняя связь с UI, минимизация приложения через Back-кнопку и автозапуск при загрузке ОС.
🔧 Что нового: минимальный Flutter SDK поднят до 3.38.0. Добавлена поддержка жизненного цикла UIScene на iOS (фикс работы в мультиоконном режиме).
👍 Лайки: 579, 📥 Скачиваний: 125K
pub.dev/packages/flutter_foreground_task

airship_flutter 12.3.0 — официальный плагин Airship для пуш-уведомлений, Live Activities, In-App сообщений, флагов фич и аналитики.
🔧 Что нового: iOS SDK → 20.10.0, Android SDK → 20.9.0. Исправлен рендер нативных Scenes во встроенном виде. В AirshipEmbeddedView добавлен параметр selection для приоритизации отображения. В EmbeddedInfo появились instanceId, priority, extras.
👍 Лайки: 17, 📥 Скачиваний: 8.18K
pub.dev/packages/airship_flutter

dartssh2 2.22.2 — чистый Dart-клиент SSH/SFTP для VM и Flutter.
🆕 Добавлен метод flush() в SSHSocket, SSHClient и SSHChannel для принудительной отправки буферизованных данных (#183).
👍 Лайки: 145, 📥 Скачиваний: 44.9K
pub.dev/packages/dartssh2

bluesky 1.7.2 — полноценный клиент Bluesky/AT Protocol для Dart и Flutter.
🔧 Что нового: tools.ozone.queue.defs: поля reportTypes и subjectTypes стали опциональными. tools.ozone.report.defs: добавлено поле isAutomated в reportView. Обновлены лексиконы.
👍 Лайки: 31, 📥 Скачиваний: 5.46K
pub.dev/packages/bluesky

minimals_state_manager 2.1.4 — лёгкий стейт-менеджмент и DI без кодогенерации. Сочетает подходы GetX, Provider и GetIt: работает с ChangeNotifier, ValueNotifier или родным MinNotifier (с жизненным циклом onInit/onReady). Встроенный сервис-локатор MinService и провайдеры с авто-диспоузом.
🔧 В обновлении: исправлена публикация платформ на pub.dev, откатили виджет-тесты на все платформы.
👍 Лайки: 12, 📥 Скачиваний: 222
pub.dev/packages/minimals_state_manager

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

Поддержать канал

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #devtools_shared #flutter_foreground_task #airship_flutter #dartssh2 #bluesky #minimals_state_manager
Ловушка «готовых модулей»: когда DRY убивает гибкость 🎯

Все мы любим DRY. Упаковал логику в модуль — и забыл, переиспользуйся на здоровье. Но есть нюанс, о котором редко говорят на конференциях: самое сложное в модуле — не функциональность, а гибкость. 🧩

Представь: подключил модуль аутентификации или чата (привет, Serverpod 👋). В демо — магия: логин, сессии, мессенджер «из коробки». Но через месяц продукту нужно: добавить поле «роль» к юзеру, свой флоу верификации, вложения в сообщениях, кастомные права доступа.

И тут ты упираешься в стену: модели живут внутри чужого модуля. Твой UserProfile — это их UserInfo. Таблицы — их таблицы. Расширить нельзя. Два пути: городить костыли с параллельными таблицами и склейками 🛠️ или форкать модуль. А форк — это навсегда: тащи его через каждое обновление фреймворка. Ад поддержки чистой воды. 😱

Это не баг Serverpod — это системная ловушка любого «фреймворка с батарейками». Чем больше логики зашито в чужие модели, тем быстрее ускоритель превращается в тормоз. И стена обнаруживается не сразу, а когда переделывать уже больно и дорого. 💸

В DartWay выбрали обратный принцип: фреймворк не должен владеть моделями приложения. 🛡️

Авторизация? Готова: телефон, OTP, сессии, переживающие рестарты. Но пользователь — это твоя модель UserProfile, в твоей базе, с твоими полями (роли, аватар, доменная логика). Нужно поле — добавил поле. Никаких форков. ✨

Формула проста: инструменты снимают рутину (авторизация, права, реалтайм, CRUD), но не забирают свободу. Все модели — твои. Вся логика — твоя. Никаких дверей с надписью «дальше только форк». 🚫🚪

Через пару дней DartWay выйдет на pub.dev — можно будет проверить на своём проекте. 🚀

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #dartway_dev_ru #architecture #backend #pubdev
🤡1
Самые лучшие обновлённые пакеты за последние 24 часа

dart_nats 1.2.1 — лёгкий клиент NATS для Dart/Flutter (pub/sub, запросы, KV, JetStream).
Обновлён README — добавлена документация по микросервисному фреймворку (ADR-32) и Client Discovery.
👍 Лайки: 39, 📥 Скачиваний: 7.3К
https://pub.dev/packages/dart_nats

portal_labs 0.37.0 — библиотека из 40+ нулевых-зависимостей Flutter-компонентов (пикеры, слайдеры, навигация, анимации).
Добавлен SwipeableActionTile — физика свайпов с пружинистым откликом, поддержкой двух сторон, инерцией и тактильной отдачей. Готовый к кастомизации через SwipeableActionTileStyle.
👍 Лайки: 42, 📥 Скачиваний: 388
https://pub.dev/packages/portal_labs

file_magic_number 2.1.0 — кроссплатформенный пакет для определения типа файла по «магическим числам» (заголовкам) и расширениям. Работает на мобильных, десктопе и вебе без нативного кода.
⚡ Производительность: detectFileTypeFromPathOrBlob теперь читает только первые 512 байт через стримы — нет OOM на больших файлах и ускорено определение.
📦 Новые форматы: поддержка Gzip (.gz), Ogg (.ogg, .ogv), FLAC (.flac).
🔧 Кастомные типы: добавлен FileMagicNumber.registerCustomType для динамической регистрации своих MIME, расширений и сигнатур.
🔄 Зависимости: mime обновлён до ^2.0.0 — устранены конфликты с Firebase и pdf_combiner.
👍 Лайки: 28, 📥 Скачиваний: 14.1К
https://pub.dev/packages/file_magic_number

json_schema_builder 0.1.6 — Dart-библиотека для типобезопасного создания и валидации JSON Schema (Draft 2020-12). Позволяет декларативно описывать структуру данных: от простых типов до сложных композиций (allOf, anyOf, $ref), с понятными ошибками валидации.
Экспортирован SchemaRegistry — теперь можно управлять ссылками на схемы при валидации компонентов.
👍 Лайки: 28, 📥 Скачиваний: 56.1К
https://pub.dev/packages/json_schema_builder

genai_primitives 0.2.4 — базовые примитивы (ChatMessage, Part, ToolDefinition) для кросспровайдерных GenAI-приложений на Dart.
В примере заменили print на log для корректного логирования.
👍 Лайки: 1, 📥 Скачиваний: 22.8К
https://pub.dev/packages/genai_primitives

genui 0.10.0 — пакет для создания динамических UI на Flutter, которые генерируются LLM в реальном времени на основе диалога с пользователем.
Ключевые изменения (BREAKING):
• Ядро вынесено в package:a2ui_core — типы сообщений (A2uiMessage, CreateSurface и др.) теперь оттуда.
• SurfaceController.store и DataModelStore удалены; доступ к модели через contextFor(id).dataModel.
• SurfaceDefinition.validate стал асинхронным (поддержка $ref через SchemaRegistry).
• PromptBuilder методы стали асинхронными (createChat, createCustom).
• Сужен публичный API низкоуровневых примитивов.
• Запись в DataModel стала строже (брасывает исключения, заполняет пропуски в списках null).
👍 Лайки: 187, 📥 Скачиваний: 20.8К
https://pub.dev/packages/genui

FlutterPulse — канал о мире Flutter!
Поддержать канал

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #dart_nats #portal_labs #file_magic_number #json_schema_builder #genai_primitives #genui #a2ui_core
Hot Reload на бэкенде: магия или лишняя суета? 🤔

Коллеги, давайте поговорим про Serverpod и их фичу с горячей перезагрузкой. Идея звучит заманчиво: меняешь код Dart на сервере — видишь результат мгновенно, без рестартов и долгих билдов. Звучит как мечта, правда? ✨

Но есть один нюанс. Автор оригинального поста бросает вызов этому энтузиазму: «Разрабатываю, пока мою посуду или в зале. Не понимаю, как hot reload улучшит жизнь в таком режиме». 🛑🏋️‍♂️🍽️

И тут ты ловишь себя на мысли: а действительно ли нам это нужно?
Backend — это не UI. Там нет пикселей, которые нужно выровнять «под пиксель-перфект» за секунду. Там бизнес-логика, миграции БД, очереди, кэш. Часто перезапуск контейнера за 2-3 секунды — это нормально, а «горячая» замена кода в рантайме несет риски стейта, утечек памяти и головной боли при отладке. 🐛💥

Получается забавный парадокс: мы привыкли к комфорту Flutter на клиенте и пытаемся тащить его на сервер любой ценой. Но может, бэкенду лучше быть скучным, предсказуемым и статичным? 🧱

Как вы к этому относитесь? Hot Reload на сервере — это гейм-чейнджер или решение проблемы, которой не существует? Пишите в комментариях! 👇💬

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #dartway_dev_ru #serverpod #backend #hotreload
DartWay выходит на pub.dev — бэкенд для Flutter, который пишется за тебя 🚀

Месяцами я рассказывал про принципы. Теперь — сам фреймворк. На этой неделе DartWay публикуется пакет за пакетом, с разбором каждого. Сегодня — общая картина.

Проблема: Flutter-разработчик умеет делать экраны. Дальше — стена: сервер, БД, миграции, эндпоинты, авторизация, права, реалтайм. Стандартный ответ — «возьми Firebase/Supabase». Удобно, но чужая база, чужие модели, чужой язык и потолок там, где начинается настоящая бизнес-логика.

Ответ DartWay: единый декларативный слой данных от базы до виджета.

На сервере фича описывается конфигом:
// кто читает
accessFilter: (user, model) => user.id == model.ownerId

// кто пишет
allowSave: (user, model) => user.role == 'admin'

// валидация
validateSave: (model) => model.amount > 0

// в той же транзакции
beforeSaveTransaction: (model, tx) => tx.createAuditLog(model)


Эндпоинтов не существует.

На клиенте — одна строка:
ref.watchModelList<Booking>()

Типизированный живой список. Реалтайм-синхронизация, пагинация, фильтры, скелетоны загрузки — из коробки. Кто-то записал модель на сервере — виджет перестроился. Никаких сокетов руками, никаких инвалидаций кэша.

Фича целиком — от таблицы в БД до живого экрана — ~40 строк конфига и виджет.

Формула: Serverpod даёт бэкенд. DartWay убирает необходимость его писать.

---

Структура: 9 пакетов, 3 круга

🔹 Ядро (4 пакета) — модуль Serverpod: generic CRUD для любой модели с реалтайм-подписками, декларативные конфиги доступа/валидации, беспарольная авторизация по телефону, S3/MinIO, алерты об ошибках. Клиентская часть: watchModelList, сессии, переживающие рестарт, умная обработка ошибок.

🔹 Тулбокс приложения — скелет, который каждый раз пишут заново: запуск/сплэш, контракт асинхронных состояний, защищённые действия (двойной тап ≠ две записи), пайплайн уведомлений. Принцип: фреймворк не поставляет дизайн-систему. Никаких DwButton. UI-кит приезжает исходником — и дальше он твой.

🔹 Обвязка — CLI (dartway create — проект за секунды), линты/чекер конвенций, опционально Telegram Mini Apps, мост в DartWay Studio.

---

Три принципа, на которых всё держится

1. Фреймворк не владеет моделями. Твой UserProfile — в твоей базе, с твоими полями и ролями. Не «расширь наш UserInfo», не форк модуля. Чужую модель не расширить — форк тащится через каждое обновление.

2. Secure by default. Модель без описанного доступа — никому не отдаётся. Не «открыто, пока не закрыл» — а «закрыто, пока не открыл». Забыть закрыть можно, забыть открыть — нельзя.

3. Архитектуру проверяет машина. Конвенции + линты + чекер + скиллы для ИИ-агентов. Агент в проекте с машинно-проверяемыми правилами не разваливает его на третьей фиче. Ради этого всё и затевалось.

---

Что дальше

С завтрашнего дня — пакеты на pub.dev и разбор каждого. Первым — серверное ядро: фича без единого написанного эндпоинта.

А в субботу, 18 июля, в 14:00 МСК соберу работающее приложение вживую — за 90 минут, из пустой папки: сервер, база, реалтайм, авторизация. Бесплатно, запись будет.

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #dartway_dev_ru #serverpod #backend #architecture
🤡5👍2
Самые лучшие обновлённые пакеты за последние 24 часа

📦 cascade_widget 3.0.8 — виджет каскадных выпадающих списков (многоуровневый выбор, одиночный/множественный, поиск) для Flutter Web/Desktop/Mobile.
✅ Настраиваемая ширина попапа (overlayWidth в PopupConfig).
🐛 Фикс ухода попапа за правый край экрана (авто-сдвиг влево).
🐛 Исправлено определение тапа «снаружи» — теперь учитывается реальная ширина/высота попапа.
👍 Лайки: 7, 📥 Скачиваний: 1.5К
pub.dev/packages/cascade_widget

nitro 0.5.13 — рантайм Nitrogen SDK для нулевого оверхеда FFI во Flutter (iOS, Android, macOS, Windows, Linux, Web). Позволяет писать типобезопасные плагины без MethodChannel.
🔄 Синхронизация экосистемы с батчем nitro_webgpu (issues #13–#20). В пакете функциональных изменений нет — правки в nitro_generator и nitrogen_cli. Перегенерируйте плагин для новых фич: @NitroOwned(release:), Future<NativeHandle> для native-async, @mainThread, nullable-поддержка, самодостаточные C++ Swift-мосты, SPM-таргеты и защита от циклов симлинков.
👍 Лайки: 4, 📥 Скачиваний: 1.2К
pub.dev/packages/nitro

kaisel 1.0.0 — первый стабильный релиз Dart 3-роутера на sealed-классах и паттерн-матчинге. Никаких строковых путей и кодогенерации: стек навигации — это List<R>, переходы — манипуляции со списком. Есть типизированные модалки с результатом (run<T>), гард-пайплайн, шеллы с ленивой загрузкой.
🔄 API заморожен (SemVer). Android Predictive Back (Flutter 3.24+). Адаптивные лэйауты (three-pane, степперы, фолдаблы). Хук onTransition для аналитики. Полное покрытие обсерверами. Размер пакета сокращён с 15 МБ до 1 МБ.
👍 Лайки: 19, 📥 Скачиваний: 1.2К
pub.dev/packages/kaisel

📦 fake_cloud_firestore 4.2.0 — in-memory эмулятор Firestore для юнит-тестов. Прогоняйте логику БД без сети и проверяйте Security Rules в связке с firebase_auth_mocks.
🔄 Сигнатура MockWriteBatch.update() приведена в соответствие с cloud_firestore 6.7.1.
👍 Лайки: 144, 📥 Скачиваний: 196К
pub.dev/packages/fake_cloud_firestore

aidlab_sdk 2.5.0 — Flutter-обёртка (FFI) для работы с биосенсорами Aidlab через BLE (Android/iOS).
💥 Breaking: команды сбора/синхронизации ждут подтверждения жизненного цикла и возвращают PID (или null). Детерминированная сериализация, колбэки завершения/ошибок (stderr). Поддержка PID-less режима на прошивках < 3.6. Укреплена обработка v4 ACK/NAK, отбраковка oversized-пакетов.
👍 Лайки: 4, 📥 Скачиваний: 699
pub.dev/packages/aidlab_sdk

dart_nats 1.2.2 — лёгкий клиент NATS для Dart/Flutter (pub/sub, JetStream, KV).
🐛 JetStream.listStreams/Consumers корректно пагинируют (раньше обрезали на 256). Consumer.messages и OrderedConsumer не глотают ошибки — уходят в addError. Удалённый консьюмер бросает ошибку вместо таймаута. KeyValue.watch/history/keys не утечкают консьюмеры. Добавлены inactiveThreshold и синхронные nakSync(), termSync(), inProgressSync().
👍 Лайки: 39, 📥 Скачиваний: 7.9К
pub.dev/packages/dart_nats

Поддержать канал

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

#cascade_widget #nitro #kaisel #fake_cloud_firestore #aidlab_sdk #dart_nats #flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages
Как тестировать Flutter на iPhone бесплатно и без Мака? 🚀

Знакомая боль: хочешь проверить приложение на железе, а Mac нет, а платить $99 в год за Apple Developer Program жалко? Автор статьи нашёл рабочий «инди-путь» за $0 и ~1 час настройки. Спойлер: это не магия, а грамотная сборка цепочки из 4 инструментов 🛠

Суть схемы проста: Tenorshare iCareFone (Windows) разово включает «Режим разработчика» на айфоне (обязательно с iOS 16+) → GitHub Actions на macOS-раннере собирает неподписанный .ipa за 8 минут (важно зафиксировать Flutter 3.44.0 и кэш через flutter precache --no-android --no-web) → Sideloadly (Windows) подписывает билд твоим бесплатным Apple ID и ставит по USB → В настройках айфона подтверждаешь доверие своему сертификату. Готово! 📱

Есть нюансы, о которых молчат в туториалах: у бесплатного аккаунта подпись живет 7 дней, лимит — 3 приложения одновременно. Sideloadly может менять Bundle ID (добавляя суффикс), из-за чего обновление воспринимается как новая установка — данные пользователя сбрасываются 😱 Обязательно коммитьте GoogleService-Info.plist и firebase_options.dart в репозиторий, иначе CI упадёт. И следите за версией раннера: macos-latest с июня 2026 переключится на macOS 26, лучше явно прописать macos-14.

Читать полную инструкцию с yml-конфигами и разбором экономики выхода в App Store из России (спойлер: 10–20 тыс. руб./год через зарубежные карты, Gift Card — дороже и рискованнее): статья на Хабре

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

#flutter #dart #flutterpulse #flutterpulsehabr #ios #githubactions #sideloadly #cicd
🔥 Technique of the Week: Погружаемся в Iterable!

Каждую неделю команда Flutter делится крутыми приемами, и этот раз под микроскоп попал фундаментальный класс Iterable 🧐. Кажется, что мы знаем его вслепую, но в новом ролике разбирают нюансы, которые экономят часы дебагга и делают код чище.

Что внутри? 👇
✨ Ленивые вычисления — почему where и map не выполняются сразу, а ждут своего часа.
🛠 Частые ошибки — множественное перечисление и неожиданные side-effects.
💡 Best practices — когда лучше toList(), а когда можно обойтись итератором.

Обязательно гляньте, даже если пишете на Dart годами — точно найдете что-то новое для себя! 🚀

Смотреть на YouTube: Iterable Deep Dive
Документация по API: Iterable class

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #FlutterForDev #darttips #iterable #cleanCode
Самые лучшие обновлённые пакеты за последние 24 часа

📦 zikzak_inappwebview_internal_annotations 4.5.2
Внутренние аннотации для генератора кода плагина zikzak_inappwebview. Исправлена генерация InvalidType для полей со ссылками на другие генерируемые типы (fallback на AST). Добавлены camelCase-геттеры для SCREAMING_SNAKE_CASE констант enum. Генератор перестал создавать геттеры для зарезервированных слов Dart и нестандартных кастомных значений. Добавлен GENERATOR_NOTES.md с описанием workflow null-safety.
👍 Лайки: 0, 📥 Скачиваний: 9.0К
https://pub.dev/packages/zikzak_inappwebview_internal_annotations

📦 apollovm 2.13.0
Полиглотная виртуальная машина (Dart, Java, Kotlin, Go, C#, JS/TS, Lua, Python) для интерпретации, кросstranspilation и JIT-компиляции в Wasm. Работает нативно, в вебе и Flutter (<10 Мб). Завершена поддержка дженерик-полей (Box<T>) и возврата агрегатов в Wasm-бэкенде. Исправлены боксинг/анбоксинг при возврате значений, добавлен кейс Object → String/bool. Теперь работают List/Map через границы модуля. Закрыты все пункты плана WASM_BACKEND_PLAN (A–G).
👍 Лайки: 54, 📥 Скачиваний: 4.6К
https://pub.dev/packages/apollovm

📦 dart_nats 1.2.3
Лёгкий клиент NATS для Dart/Flutter (pub/sub, запросы, JetStream, KV). Фоновый реконнект больше не застревает и не прекращается раньше времени. Сокеты корректно чистятся при обрыве связи (таймаут 2 сек). Колбэк onReconnect теперь срабатывает при переподключении вместо onConnect.
👍 Лайки: 39, 📥 Скачиваний: 8.0К
https://pub.dev/packages/dart_nats

📦 flutter_local_notifications_platform_interface 12.0.1
Общий интерфейс для платформ плагина локальных уведомлений. Используется для написания кастомных реализаций под разные ОС. Исправлена документация NotificationResponseType.selectedNotificationAction (PR от fush1m1).
👍 Лайки: 36, 📥 Скачиваний: 2.3М
https://pub.dev/packages/flutter_local_notifications_platform_interface

📦 inspire_blur 0.4.0
Пакет для высокопроизводительного прогрессивного размытия (backdrop/child) на кастомных GPU-шейдерах во Flutter. ✨ Цветокоррекция — яркость, контраст, экспозиция, насыщенность и вибранс для области размытия (BlurColorAdjustment). 🔧 Анимации — добавлен lerp() в конфиги для плавных переходов и неявных анимаций. Документация оптимизирована.
👍 Лайки: 25, 📥 Скачиваний: 1.1К
https://pub.dev/packages/inspire_blur

📦 zikzak_inappwebview_platform_interface 4.5.2
Общая платформенная абстракция для плагина zikzak_inappwebview, позволяющая реализовывать нативную логику WebView на разных ОС под единым интерфейсом. Исправлена генерация InvalidType для ссылок на другие генерируемые типы. Добавлены camelCase-геттеры для всех enum-констант (например, UserScriptInjectionTime.atDocumentStart). Генератор перестал создавать геттеры для зарезервированных слов Dart (default, switch и др.). Добавлен GENERATOR_NOTES.md с описанием workflow регенерации.
👍 Лайки: 1, 📥 Скачиваний: 9.0К
https://pub.dev/packages/zikzak_inappwebview_platform_interface

Поддержать канал
FlutterPulse — канал о мире Flutter!

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #zikzak_inappwebview_internal_annotations #apollovm #dart_nats #flutter_local_notifications_platform_interface #inspire_blur #zikzak_inappwebview_platform_interface
❤1👍1
Чистим код в CustomScrollView: знакомимся с SliverMainAxisGroup 🧹✨

Сложная верстка в
CustomScrollView

— это часто десятки вложенных сливеров, из-за которых файл превращается в «спагетти», а читаемость уходит под плинтус. Раньше спасали кастомные обёртки или
MultiSliver

из пакета
sliver_tools

, но библиотека давно не обновляется и может подводить в производительности.

Хорошая новость: фреймворк вырос! Теперь «из коробки» есть
SliverMainAxisGroup

— нативный способ сгруппировать несколько сливеров в один виджет. Никаких сторонних зависимостей, чистый Dart и понятная структура.

Пример использования:
SliverMainAxisGroup(
  slivers: [...]
);

Код становится аккуратнее, а рефакторинг — приятнее. 🚀

А вы уже перешли на нативное решение или ещё держите
sliver_tools

? Делитесь в комментариях! 👇

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #flutter_amiga #CustomScrollView #Slivers #CleanCode
🏠 Виджеты на главном экране: делаем Flutter-приложение ближе к пользователю

Хотите, чтобы пользователи видели актуальную погоду, список задач или статистику шагов, не открывая приложение? Виджеты на домашнем экране — именно то, что нужно! 📱✨

Во Flutter нет «коробочной» поддержки виджетов, но есть проверенный путь: нативные инструменты + библиотека-посредник home_widget. Давайте разберем, как это работает.

🎯 Четыре типа виджетов, которые стоит знать:
🔵 Информационные — погода, курсы валют, счетчики. Обновляются по таймеру или пушу.
🔵 Коллекции — лента статей, галерея фото, последние треки.
🔵 Управляющие — кнопка «Новая заметка», «Play/Pause», быстрый поиск.
🔵 Гибридные — комбо из инфы и кнопок (классический плеер).

⚙️ Нативная магия под капотом:

Android — два пути:
▫️ Классический XML (старой школы, но работает).
▫️ Jetpack Glance — современный, декларативный, на базе Compose. Пишете UI как в Flutter, только на Kotlin. 😎

iOS — только WidgetKit (с iOS 14) + SwiftUI. Архитектура строится на TimelineProvider (когда обновляться) и Entry (что показывать). Чисто, нативно, «по-аппловски». 🍏

🔗 Клей для всего этого — пакет
home_widget

:
Он позволяет из Dart-кода класть данные в общее хранилище и пинать систему: «Эй, обнови виджет!».
Future<void> _sendAndUpdate(int? value) async {
    await HomeWidget.saveWidgetData(_countKey, value);
    await HomeWidget.updateWidget(
        androidName: 'CounterGlanceWidgetReceiver',
        iOSName: 'CounterWidget'
    );
}

Схема проста: saveWidgetData → пишем данные → updateWidget → триггерим перерисовку на обеих платформах. Есть еще getWidgetData, если нужно считать что-то обратно.

💡 Итог:
Виджеты — мощный буст удержания и вовлеченности. Путь не самый тривиальный (придется писать нативный код), но Glance + WidgetKit + home_widget — это рабочий, документированный и надежный стек. 💪

Начинайте с изучения гайдов по Glance и WidgetKit, а пакет возьмет на себя грязную работу по синхронизации. 🚀

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

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

#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #homewidget #widgetkit #glance
Заметки без облака: P2P, железное шифрование и режим «под принуждением» 🛡️

Проблема централизованных хранилищ знакома всем: пожар в дата-центре, бан по решению корпорации или утечка базы — и твои данные потеряны. Автор статьи решил это радикально: создал приложение для заметок, где нет ни единого центрального сервера ☁️❌

Архитектура построена на принципе Local-First: данные живут в JSON-файлах на твоих устройствах и синхронизируются напрямую (P2P). Самое необычное — это две полностью независимые кодовые базы: десктоп на Python/PySide6 и мобильная на Flutter/Kotlin. Они написаны отдельно, но строго совместимы «до байта» — проверяется кросс-тестами 🤝

🗂 Хранение и поиск
«Источником истины» — обычная папка с файлами. Перенос на новый телефон = копирование каталога или экспорт в ZIP. Поисковый индекс (FTS5 + rapidfuzz) — просто кэш, который перестраивается из файлов за секунды. Понимает опечатки и даты в запросе 🔍

🔗 Синхронизация (P2P, без облака)
Устройства находятся в LAN через mDNS, сопрягаются по QR-коду с одноразовым токеном. Связь — взаимный TLS с certificate pinning (как в Syncthing). Соединение держится открытым, изменения улетают мгновенно ⚡
Движок синка — журнал операций (op-log) + версионные вектора. Обмениваются только дельтами. Конфликты решаются просто: побеждает свежее изменение, а удаление имеет абсолютный приоритет над редактированием 🗑️

🔐 Шифрование: паранойя в хорошем смысле
Включается опционально, защищает 5-значным PIN. Но слабый PIN здесь — не проблема, благодаря железу:
1.  AES-256 на каждый файл. Путь к файлу вшит в AAD — переместил файл = расшифровать нельзя.
2.  PIN не расшифровывает данные. Он уходит в TPM / Android Keystore (TEE), где на неизвлекаемом ключе рождается секрет. Без конкретного чипа перебор невозможен 🔒
3.  Scrypt + экспоненциальные таймауты + автоуничтожение мастер-ключа после 5 неудач (счётчик защищён от сброса).
4.  Даже Root-доступ не достанет ключ из TEE.

🤫 Киллер-фича: Режим «под принуждением» (Duress Mode)
Вводишь PIN задом наперёд → происходит необратимое криптографическое стирание мастер-ключа. Данные становятся мусором. Приложение открывает правдоподобную «подложку» с пустыми заметками. Факта уничтожения не видно — плавный выход из-под давления 🎭

🧪 Тестирование: ИИ против ИИ
Код писался в паре с ИИ, а ломали его — рой независимых ИИ-агентов. Три раунда аудита. Каждая уязвимость закрывалась регрессионным тестом (проверяли: внезапное отключение питания, утечки, сброс брутфорса, расхождение состояний).
Главное — единая тестовая сетка для Python и Dart, гарантирующая, что десктоп и мобила никогда не расходятся в данных ✅

💻 Всё открыто под GPL-3.0. Есть демо-видео. Баланс между удобством (PIN, LAN-синк) и параноидальной безопасностью найден идеально ⚖️

Читать полную статью с деталями архитектуры и кода: здесь

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

#flutter #dart #flutterpulse #flutterpulsehabr #security #p2p #encryption #localfirst
Самые лучшие обновлённые пакеты за последние 24 часа

flutter_bidi_text 2.0.0 — виджеты с автоопределением направления текста (RTL/LTR) для мультиязычных приложений. Заменяют Text, RichText, TextField, SelectableText префиксом Bidi.

🔴 Breaking: виджеты теперь наследуются от StatelessWidget/StatefulWidget, а не от флаттер-аналогов. Проверяйте типы через is BidiText и т.д.
✅ Добавлены BidiSelectableText и BidiText.rich().
🐛 Исправлены 8 потерянных параметров в BidiTextField, поддержка https:// как LTR, юникод-экранирование в регэкспах, документация колбэков.

👍 16 | 📥 647
🔗 pub.dev/packages/flutter_bidi_text

dcli 9.0.1 — обновление инструмента для кроссплатформенных CLI-скриптов и приложений на Dart. Замена Bash/Python/Go: типизация, null-safety, компиляция в единый бинарник (~10 МБ) без зависимостей на целевой машине.

**Что нового:** обновлена зависимость posix до 6.5.1 для корректной работы команды kill.

👍 226 | 📥 52.7K
🔗 pub.dev/packages/dcli

emoji_picker_flutter 4.5.3 — популярный пикер эмодзи.

**Что нового:** исправлена сборка на Android (AGP 9) при отключённом встроенном Kotlin (android.builtInKotlin=false). Теперь Kotlin Gradle Plugin подключается корректно. Плюс мелкие правки линтера.

👍 655 | 📥 151K
🔗 pub.dev/packages/emoji_picker_flutter

posix 6.5.2 — Dart-обёртка над POSIX API для Linux и macOS (работа с процессами, сигналами, файлами, пользователями).

**Что нового:** задокументирован enum Signal для удобной работы с системными сигналами.

👍 10 | 📥 4.86M
🔗 pub.dev/packages/posix

airship_flutter 12.4.0 — официальный плагин Airship для пуш-уведомлений, Live Activities, In-App сообщений, флагов фич и аналитики.

🔄 **Обновление:** подтянуты нативные SDK — Android 20.10.0, iOS 20.11.0 (багфиксы и улучшения стабильности).

👍 17 | 📥 8.6K
🔗 pub.dev/packages/airship_flutter

pub_release 11.9.0 — автоматизация релиза Dart/Flutter-пакетов в pub.dev.

**Что делает:** прогоняет хуки, форматирует код, бьёт версию (semver), генерирует version.g.dart, обновляет pubspec.yaml и CHANGELOG.md, создаёт git-теги и релиз-ноты из коммитов, публикует в pub.dev. Поддерживает монорепози (pub_release multi).

**В обновлении:**
• Переход на dcli 9.x
• Фиксы линтера и документация исключений.

👍 20 | 📥 488
🔗 pub.dev/packages/pub_release

Поддержать канал

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

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #flutter_bidi_text #dcli #emoji_picker_flutter #posix #airship_flutter #pub_release
🔥1
Самые лучшие обновлённые пакеты за последние 24 часа

dart_helper_utils 6.1.0 — «батарейки в комплекте» для Dart: конвертация типов, коллекции, intl, дебаунсер, стримы и утилиты в одном импорте.

Что нового: строковые хелперы (кейсы, слагифай, маски, проверки на пустоту и пр.) вынесены в отдельный zero-dep пакет stringo. dart_helper_utils зависит от него и реэкспортирует — код не менять, импорт тот же. Остались: валидация email/URL/телефона, MIME, parseDuration, base64, палиндромы и др.

⚠️ При миграции: имена extension-типов для вынесенных методов изменились (например, DHUCaseConversionExtensions → StringCaseExtension).

👍 Лайки: 44, 📥 Скачиваний: 1.9K
pub.dev/packages/dart_helper_utils

http_auth 1.0.5 — мидлварь для HTTP-аутентификации (Basic/Digest) с автоопределением метода.

Что нового: исправлена обработка некоторых редиректов.

👍 Лайки: 38, 📥 Скачиваний: 8.1K
pub.dev/packages/http_auth

plist_parser 0.3.0 — парсер .plist (XML и Binary) для Dart/Flutter. Читает конфиги Apple, манифесты и бинарные плисты, отдавая удобный Map.

В обновлении: исправлена CI (поддержка Node.js 24 через dart-lang/setup-dart@v1.7.2), устранена проблема с депрекацией Node.js 20.

👍 Лайки: 13, 📥 Скачиваний: 46.3K
pub.dev/packages/plist_parser

flutter_local_notifications_platform_interface 12.1.0 — общий интерфейс для платформных реализаций популярного плагина локальных уведомлений.

Что нового: добавлен NotificationResponseType.notificationDismissed — теперь можно отслеживать, когда пользователь свайпает уведомление (PR от Василия Лаушкина).

👍 Лайки: 36, 📥 Скачиваний: 2.35M
pub.dev/packages/flutter_local_notifications_platform_interface

ApolloVM 2.21.0 — кроссплатформенная VM (Dart, Java, Kotlin, Go, C#, JS/TS, Lua, Python) для интерпретации, трансляции между языками и JIT-компиляции в Wasm. Работает нативно, в браузере и во Flutter (<10 Мб).

Что нового: исправлены два бага генерации кода, найденные при документировании null-safety:
• Kotlin: xs?[0] → теперь корректный xs?.get(0) (добавлен хук закрытия скобки).
• Lua: литерал null → заменён на nil (фикс ложных сравнений).
В README добавлена полная матрица поддержки null-safety по всем языкам с пометками потерь семантики (⚠️ lossy).

👍 Лайки: 55, 📥 Скачиваний: 5.5K
pub.dev/packages/apollovm

Sass 1.102.0 — Dart-реализация компилятора Sass/SCSS в CSS.

Что нового: обновлена цветовая функция rec2020 — теперь используется гамма 2.4 в соответствии с актуальным черновиком CSS Color 4.

👍 Лайки: 20, 📥 Скачиваний: 80.9K
pub.dev/packages/sass

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

Поддержать канал

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #dart_helper_utils #http_auth #plist_parser #flutter_local_notifications_platform_interface #ApolloVM #Sass #stringo