Flutter Pulse
726 subscribers
452 photos
1.06K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Создай свой CLI-пакет на Dart с помощью этой простой инструкции 🚀
Всем привет! 👋 Пока я готовлю пост про шейдеры, давайте обсудим, как можно создать свой CLI-пакет на Dart 🤔. Мы сталкиваемся с CLI каждый день, зачастую даже не задумываясь об этом 🙄. Когда вы вводите flutter doctor, чтобы проверить окружение, или запускаете firebase init, чтобы создать проект Firebase, вы взаимодействуете именно с CLI 📊.
CLI (Command Line Interface) — это интерфейс взаимодействия с приложением через консоль: вы передаете команды и аргументы, а приложение что-то выполняет 🔄. Если сильно упростить, CLI — это возможность ввести в консоли: mytool login и программа выполнит какое-то действие, не открывая UI 📱.
Создать свой CLI на Dart довольно просто 🎉. Для этого нужно выполнить команду: dart create -t console-full my_cli_tool и cd my_cli_tool 📁. После генерации у вас появится базовая структура проекта 📂.
Все, что находится в папке bin/, является входной точкой нашего CLI 🔑. Когда структура готова, можно добавить команды 📝. Для обработки аргументов и команд идеально подходит пакет args 📈.
Представим, что у нас есть приложение, и мы хотим добавить CLI-команду для авторизации пользователя 📧. Создадим команду LoginCommand 📝.
Для взаимодействия с терминалом используем потоки: stdout, stderr и stdin 📊.
stdout — вывод обычной информации в терминал (сообщения, результаты) 📝.
stderr — поток ошибок (то, что пользователю важно видеть, если что-то пошло не так) ⚠️.
stdin — ввод данных пользователем 📊.
Например, stdin.readLineSync() просто ждет, пока пользователь нажмет Enter, и возвращает введенный текст 📝.
Для более удобной работы с интерактивным вводом можно использовать библиотеку dcli 📈.
После успешного логина данные можно сохранить на диск (например, в ~/.my_cli/config.json) 📁.
И вот наступает самый приятный момент: CLI готов, его можно сделать глобальной системной командой 🎉.
Для этого в файле pubspec.yaml нужно добавить секцию executables 📝.
После этого выполняем: dart pub global activate --source path 📈.
Теперь в любой директории можно набрать: mytool login и команда запустится, будто это встроенная системная утилита 📊.
Если вы хотите пойти дальше, можно собрать бинарник под macOS, Linux или Windows 📈.
Таким образом, CLI становится полноценным инструментом, который можно использовать на любых платформах и с приложениями на разных языках программирования 🌐.
Хотите узнать больше? 🤔 Читайте полную статью по ссылке📚.
И не забудьте подписаться на канал flutterpulse 📣, чтобы быть в курсе всех последних новостей и обновлений 📊!
#flutter #dart #flutterpulse #flutterpulsenews 💻📱🔥
Сенсационные новости! 🚀💻 Компания Avalonia, известная своим фреймворком для создания кроссплатформенных .NET-приложений с современным UI, заключила партнёрское соглашение с командой Flutter! 🤝 Это сотрудничество открывает новые горизонты для разработчиков, поскольку в его рамках запущен экспериментальный проект по интеграции Impeller в .NET 🌀! 🔫

Уже достигнуты значительные успехи: создан первый MVP и разработана инфраструктура для сборки и тестирования Impeller на платформах Windows, macOS и Linux 🌐! 🔥 Это означает, что разработчики Dart и Flutter скоро смогут использовать Impeller для создания ещё более мощных и эффективных кроссплатформенных приложений 🚀!

Хотите быть в курсе последних событий и новостей из мира Flutter и Dart? 🤔 Тогда обязательно стоит подписаться на канал flutterpulse, где вы найдёте самую актуальную информацию и инсайты от профессионалов 📚! #flutter #dart #flutterpulse #flutterpulsenews

Узнайте больше о партнёрстве между Avalonia и командой Flutter и о перспективах Impeller в .NET, перейдя по ссылке 📊! 💻
🔥1
Привет, программисты! 🤩 Ты знаешь, как бывает: стандартная физика прокрутки не всегда справляется с твоими креативными задумками 🤔. Карусели, липкие карточки и особая инерция - все это требует кастомного подхода 🔄. И вот тут на помощь приходит класс ScrollPhysics 🚀! ⬆️

В свежей статье вместе с Андреем, опытным разработчиком из Flutter Developer Surf, мы немножко погрузились в мир кастомной физики прокрутки 🌊. Ты узнаешь, как создавать свои собственные уникальные эффекты и поведения в приложениях 📱. И самое главное - полный код примеров ждет тебя в репозитории 🏄!

Читай полную статью здесь и не забудь подписаться на flutterpulse, чтобы быть всегда на высоте 🚀! #flutter #dart #flutterpulse 🎉 #flutterpulsenews
Привет, друзья! 👋 Сегодня мы поговорим об assert в Dart 🤔. Это оператор, который помогает разработчикам проверять условия в коде и избегать ошибок 🙅‍♂️.
Что такое assert?
Это оператор, который проверяет условие и выдает ошибку AssertionError, если оно не выполнено 🚫. Синтаксис прост: assert(условие, 'сообщение об ошибке');
Примеры использования:
Мы можем использовать assert для проверки входных параметров в методах и конструкторах 📝. Например, если мы создаем программу для вывода количества товаров, мы можем добавить проверку, чтобы избежать логических ошибок 🤦‍♂️.
Код:

void setProductsAmount(int amount) {
  assert(amount >= 0, 'Количество товаров не может быть отрицательным!');
  print('Количество товаров установлено: $amount');
}


Еще один пример:
Мы можем создать класс данных карточки и добавить проверку, чтобы ограничить создание карточки с картинкой без ссылки на изображение 📸.
Код:

enum CardType { simple, withImage }

class Card {
  const Card({
    required this.type,
    required this.title,
    required this.subtitle,
    this.imageUrl,
  }) : assert(type != CardType.withImage || imageUrl != null,
            'Для карточки типа withImage необходимо указать imageUrl!');

  final CardType type;
  final String title;
  final String subtitle;
  final String? imageUrl;
}

Важно:
Assert работают только в debug режиме, поэтому их нельзя использовать для валидации действий пользователя или внешних данных 🚫.
Хотите узнать больше?
Читайте полную статью здесь
Подпишитесь на наш канал flutterpulse, чтобы быть в курсе всех новостей и обновлений из мира Flutter и Dart!
Хэштеги: #flutter #dart #flutterpulse ❤️👍 #flutterpulsenews
🚀 Flutter 3.38: Новый уровень продуктивности для разработчиков!

Flutter 3.38 уже здесь, и он заставляет писать меньше, а создавать больше! 🔥 Обновление полно крутых фишек, улучшений UI и инструментов для веба, iOS, Android и десктопа.

Главные фишки нового релиза

1️⃣ Сокращения точек в Dart
Пишите лаконично: .start вместо MainAxisAlignment.start и .all(8.0) вместо EdgeInsets.all(8.0)
Поддержка именованных конструкторов и улучшенная читаемость кода

2️⃣ Веб-разработка на новом уровне
Конфигурационные файлы web_dev_config.yaml для хоста, порта и заголовков
Настройки прокси прямо в проекте
Улучшенная горячая перезагрузка, даже с несколькими браузерами

3️⃣ Фреймворк и UI
OverlayPortal для гибкого отображения всплывающих виджетов
Предиктивные переходы назад на Android
Расширенная интеграция с десктопом: информация о мониторах и окнах на Windows
Исправления жизненного цикла виджетов и стабильность ResizeImage

4️⃣ Material & Cupertino
Унификация API через WidgetState
Новые возможности Badge.count(maxCount), InkWell.onLongPressUp
Улучшения iOS-виджетов: CupertinoSlidingSegmentedControl, CupertinoSheet
Полировка компонентов: DropdownMenuFormField, SegmentedButton

5️⃣ Прокрутка и Sliver
Надёжная обработка жестов и точная навигация по фокусу
Новый конструктор SliverGrid.list
Улучшения для сложных макетов и вложенных слайверов

6️⃣ Доступность
SliverSemantics для аннотаций слайверов
AutoComplete сообщает статус поиска
Увеличенные целевые области касания в TimePicker

7️⃣ iOS и Android
Поддержка iOS 26, Xcode 26, macOS 26
Миграция на жизненный цикл UIScene
Совместимость с размером страницы 16 КБ на Android
Исправления утечек памяти и обновление NDK

8️⃣ Двигатель и DevTools
Унификация рендереров CanvasKit и Skwasm
Vulkan/OpenGL ES: стабильность и производительность
Расширенные предварительные просмотры виджетов в IDE (MultiPreview, группы, кастомные аннотации)
Исправления панели сети и Flutter Inspector

9️⃣ Устаревания и важные изменения

Новый flutter.version.json вместо version
Устаревшие свойства CupertinoDynamicColor
Java 17 обязательна для Android

🌟 Flutter 3.38 — это меньше шаблонного кода, больше контроля над UI и продуктивность на всех платформах.

📌 Полезные ссылки:
Полный перевод статьи от нашего канала
Оригинал статьи


#flutter #dart #flutterpulse #FlutterPulsenews #mobiledev #crossplatform #flutterdev #dartlang #UI #DevTools #iOS #Android #webdev
🔥5
🚀 Flutter Flight Plans 2025 — когда Flutter встречает ИИ и становится умнее тебя 😅

Google снова показала, кто тут задаёт темп! 🎯
На конференции Flutter Flight Plans (a.k.a. Flutter Forward 2025) команда представила обновления, от которых даже опытные Flutter-разработчики сказали: «Вау, это уже не просто фреймворк, это экосистема будущего!»

🤖 Flutter теперь с ИИ. Серьёзно.

Gemini CLI позволяет создавать целые приложения через диалог с моделью.
Ты можешь просто сказать:

“Создай фитнес-приложение с карточками упражнений и трекингом прогресса.”

И всё — ИИ сам генерирует код, интерфейс и даже вызывает BuildRunner!
Flutter фактически стал интерактивным напарником, а не просто SDK.

🎨 GenUI — когда интерфейс рождается из мыслей

GenUI — это новый подход: UI, который генерирует LLM.
Модель создаёт JSON со схемой интерфейса, Flutter отрисовывает всё “на лету”, и ты сразу видишь результат.
Можно тестировать превью виджетов без живого LLM.
Появится система “оценок” UI, чтобы QA знал, что интерфейс соответствует ожиданиям.
Разработчики планируют добавить инструменты для “обратной связи” — чтобы дебажить AI-интерфейсы в реальном времени.

Это буквально “Flutter meets AI Design”. 🤯

⚙️ Direct Native Interop (a.k.a. Hooks)

Никаких MethodChannel. Никаких танцев с FFI.
Теперь — прямой доступ к нативным API, синхронный обмен памятью, мгновенные ответы от платформы.
Плагины станут быстрее, код — чище, а жизнь — проще.

🧩 Переименование “Native Assets” → Hooks: теперь это целая система build-хуков, а не просто способ добавлять ресурсы.

💡 Dart 3.10 и Flutter 3.38


📦 Новый анализатор кода
⚡️ Молниеносный Hot Reload
🧠 Dot shorthand syntax (obj?.method())
🛠 Поддержка iOS/macOS SDK 26
🧰 Обновлённые DevTools с предпросмотром виджетов прямо в IDE

Flutter становится не просто фреймворком, а полноценной средой, где даже QA можно делать без продакшн-сервера.

🌐 Jaspr и веб

Комьюнити не отстаёт!
Jaspr — веб-фреймворк на Dart, созданный GDE-разработчиком Киллианом.
Теперь даже официальные сайты Flutter и Dart Docs работают на Jasper 💪
Фреймворк использует DOM и CSS, компилируется в WebAssembly и позволяет создавать сайты с производительностью Flutter.

📱 Notebook LM — AI-приложение на Flutter

Google запустила Notebook LM, полностью написанное на Flutter.
Один код — две платформы (Android + iOS),
рейтинг ⭐️4.8, релиз в 170 странах 🌍
Flutter теперь — не только про кроссплатформу, но и про реальный AI UX.

🧠 Разработчики обсуждают будущее:

Что будет, когда UI станет динамичным, а LLM будет сам обновлять интерфейс?
Как тестировать то, что генерируется “на лету”?
Ответы уже ищут прямо в Flutter team — и приглашают комьюнити подключаться к экспериментам.


Это не просто апдейт. Это новый этап эволюции Flutter.
ИИ теперь — не опция, а часть экосистемы.
Если ты Flutter-разработчик, тебе нужно увидеть это своими глазами 👇

👉 📰 Читать статью полностью

🎥 📺 Смотреть оригинальное видео на YouTube

💬 Обсудить в комментариях
— как тебе идея AI-UI?

#flutter #dart #flutterpulse #FlutterPulseYoutube #flutterpulsenews #genui #geminilicli #flutterdev #ai #mobiledev #programming #flutterforward #flightplans2025 #dartlang #googleflutter
👍2😱1
Узнай, как создать сложные и адаптивные интерфейсы с помощью понимания Viewport и ограничений во Flutter 🤔!
В этой статье вместе с Андреем, опытным Flutter Developer из Surf, мы разберемся в базовых понятиях, таких как Viewport, BoxConstraints и SliverConstraints 📚.
Понимание этих концепций - ключ к созданию предсказуемых и управляемых лейаутов 📈!
Хочешь узнать больше? Читай полную статью здесь📄
И не забудь подписаться на flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter 📱! #flutter #dart #flutterpulse #flutterpulsenews 🚀💻
👍1
Привет, друзья! 👋 Сегодня мы поговорим о модификаторах переменных в Dart 🤔. Это базовая, но очень важная тема для любого Flutter-разработчика 📚.
Модификаторы переменных - это ключевые слова, которые задают переменной определенные правила поведения в программе 📊. Например, можно ли изменять значение переменной или в какой момент она инициализируется 🤔.
Давайте рассмотрим некоторые из наиболее часто используемых модификаторов 📝:
- var: заставляет переменную получить и зафиксировать тип данных при первом присвоении 📈.
- final: позволяет присвоить значение только один раз, последующие изменения невозможны 🔒.
- const: фиксирует значение, присваиваемое переменной, и инициализируется в момент компиляции программы 📆.
- static: привязывает переменную не к экземпляру, а к самому классу, что удобно при работе с абстрактными классами 📁.
- late: откладывает инициализацию переменной до того момента, пока ей не будет присвоено первое значение, но требует осторожности, чтобы избежать ошибок 🚨.
И самое интересное - модификаторы переменных можно комбинировать 🤝, чтобы сделать код максимально безопасным и оптимизировать программу 🚀.
Например, late final позволяет инициализировать переменную позже, но запрещает изменение, а static const создает константу класса в момент компиляции 📊.
Хотите узнать больше о модификаторах переменных и других интересных темах из мира Flutter? 🤔 Подписывайтесь на наш канал flutterpulse и оставайтесь в курсе последних новостей и обновлений 📣!
Ссылка на полную статью 📄
#flutter #dart #flutterpulse #flutterpulsenews 💻👍
🔥3
Обновленный корпоративный шаблон Friflex Flutter Starter! 🚀 Это значит, что ваше приложение станет еще более мощным и современным! 💻

Что нового? 🤔
Обновили Flutter до версии 3.38.1+ - последней стабильной версии! 📈
Добавили поддержку Dot Shorthands из Dart 3.10 - ваш код станет еще более чистым и читаемым! 📚
Обновили правила анализатора - теперь проверка кода еще более эффективна! 🚫
Добавили инструкции для AI-ассистентов - теперь вы можете работать с Copilot и Cursor еще более эффективно! 🤖
Упрощена инициализация репозиториев - архитектура DI стала еще более удобной! 📁
Обновили документацию - теперь у вас есть актуальная информация по всем модулям! 📖
Добавили модуль обновлений - теперь поддерживаются hard и soft обновления приложения! 📈
Обновили все зависимости до последних версий - ваше приложение станет еще более стабильным! 📈
Улучшили систему тем и UI Kit - теперь ваше приложение выглядит еще более современно! 🎨

Хотите узнать больше? 🤔 Тогда переходите по ссылке и читайте подробную информацию о Flutter Starter! 📚

И не забудьте подписаться на канал flutterpulse 📣, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter и Dart! 🚀

Используйте хэштеги #flutter #dart #flutterpulse #flutterpulsenews, чтобы делиться своими мыслями и опытом с другими разработчиками! 💬

Начните свой проект прямо сейчас и ждем ваших pull requests с улучшениями и предложениями! 🚀
У меня есть супер-новость для всех, кто интересуется интеграцией языковых моделей в свои приложения 🤖!
Вы знаете, как сложно оставаться в стороне от всего этого ажиотажа вокруг AI 🤯?
Сегодня я расскажу, как подключить ваше Flutter/Dart-приложение к локальному серверу Ollama с помощью пакета ollama_dart 📈!
Ollama - это инструмент для запуска языковых моделей локально, на вашем компьютере 🖥, что дает вам приватность, полный контроль и отсутствие зависимости от облачных API ☁️.
Чтобы связать сервер Ollama с вашим приложением, используйте библиотеку ollama_dart, которая позволяет отправлять одиночные запросы, работать со стримингом ответов и использовать разные типы запросов 📊.
Подключить Ollama легко: импортируйте пакет, инициализируйте клиента и отправляйте запросы на генерацию текста 📝.
Если вам нужно получать ответы по мере генерации, используйте generateChatCompletionStream 📢.
Вы можете выбирать разные версии моделей, настраивать параметры генерации и экспериментировать с разными моделями 🔬.
Чтобы работа с LLM через Ollama была максимально продуктивной, детализируйте промт, экспериментируйте с разными моделями и используйте стриминг для больших текстов 📈.
Хотите узнать больше? Ссылка на подробную статью 📎.
Не забудьте подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter и Dart! 📱
#flutter #dart #flutterpulse #flutterpulsenews 🚀💻
🚀 Вышел Flutter 3.38.2 — важные стабильные фиксы
Свежий апдейт для всех Flutter-разработчиков

Команда Flutter выпустила патч-релиз 3.38.2, который закрывает ряд неприятных падений и проблем, связанных с widget preview, iOS-сборками и интеграцией через IDE. Если ты используешь превью виджетов или работаешь с iOS/Windows — обновление must-have.

🔥 Основные исправления

• Исправлен крэш widget preview при выходе
При анализе изменений в Dart-файле команда widget preview могла аварийно завершаться. Теперь — стабильно.

• Ошибка iOS-сборок “Improperly formatted define flag”
В add-to-app проектах Flutter мог падать при сборке на iOS. Исправлено.

• Widget preview не стартовал, если Flutter Web отключён
Теперь исключение не выбрасывается, превью корректно запускается.

• Крэш widget preview во время flutter pub get
Добавление или обновление плагинов могло ронять превью. Баг закрыт.

• Проблема с множественными crash-репортами
В некоторых сценариях один крэш создавал несколько отчётов. Теперь отчёт строго один.

• Visual Studio 2026 не поддерживается
Flutter теперь корректно сообщает о неподдерживаемой версии при сборке Windows-приложений.

• Widget preview не запускался без flutter pub get
Теперь поведение корректное и предсказуемое.

• Зависание при запуске на физическом iOS 26 из IDE
IDE устанавливала приложение, но запуск висел на белом экране. Баг исправлен.

Итог
Flutter 3.38.2 — это стабильность, меньше крэшей и надёжная работа widget preview на всех платформах. Рекомендуется обновиться всем, особенно тем, кто работает с iOS и widget preview.

ChangeLog

#flutter #dart #flutterpulse #flutterupdate #flutterpulsenews #mobiledev #iosdev #androiddev
Продолжаем наше путешествие по миру Flutter и Dart 🌐, и сегодня мы погружаемся в практические аспекты работы с Viewport и ограничениями 📊.
В этой части мы рассмотрим реальные сценарии 📈, такие как двумерные виджеты на ленте прокрутки 🔄 и хитрости с ListView и CustomScrollView 🤔, чтобы вы лучше поняли, как всё это работает вместе 🤝.
В специальных карточках 📁 вы найдёте примеры и пояснения от опытного разработчика Андрея 🙋‍♂️, которые помогут вам разобраться с прокручиваемыми списками 📜 и сложными лейаутами 📐.
Хотите узнать больше? 🤔 Тогда переходите по ссылке и читайте полную статью 📄!
И не забудьте подписаться на flutterpulse 📣, чтобы быть в курсе всех последних новостей и обновлений 📊 о Flutter и Dart 🚀!
#flutter #dart #flutterpulse #flutterpulsenews 🚀💻