Flutter Pulse
726 subscribers
455 photos
1.08K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Привет, друзья! 👋 Сегодня мы поговорим об 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 🚀💻
Привет, друзья! 👋 Сегодня у нас есть интересная новость о принципе открытости/закрытости (Open/Closed Principle) в программировании на Dart и Flutter 🤩.
Этот принцип гласит, что программные сущности должны быть открыты для расширения, но закрыты для модификации 🚫. Это означает, что вы должны иметь возможность добавлять новую функциональность без изменения существующего кода 📈.
Почему это важно? Чем больше кода мы изменяем, тем больше багов мы создаем 🐜. Каждое изменение существующего кода несет риск появления ошибок и требует повторного тестирования всех зависимых компонентов 🔄.
Следование OCP минимизирует эти риски, позволяя расширять функциональность без модификации уже работающего кода 💻.
Пример нарушения OCP и его правильного применения можно найти тут 📄.
Преимущества OCP включают:
✔️ Меньше ошибок при внесении изменений
✔️ Не требуется регрессионное тестирование существующего кода
✔️ Более простой процесс расширения функциональности
✔️ Повышение стабильности и надежности системы
Принцип открытости/закрытости — это основа стабильной и расширяемой архитектуры 🏗.
Подписывайтесь на наш канал flutterpulse, чтобы не пропустить новые статьи и новости о Flutter и Dart 📣!
#flutter #dart #flutterpulse #flutterpulsenews 🚀💻👍
👍1
Привет, друзья! 👋 Сегодня мы поговорим о двух важных понятиях в разработке на Flutter: Hot Reload и Hot Restart. 🤔 Эти механизмы используются при отладке кода и позволяют быстро применить внесенные изменения и посмотреть, как они работают. Но чем они отличаются? 🤔

⚡️ Hot Reload не перезапускает программу с нуля, а лишь «подмешивает» измененный код в уже запущенный процесс. Состояние приложения сохраняется. 🔥 Это происходит благодаря следующим шагам:
1. Вы вносите изменения в код и запускаете Hot Reload.
2. Flutter изучает, какие именно файлы вы изменили.
3. Затем перекомпилируются только важные части: библиотеки с измененным кодом, основная библиотека и все библиотеки, связанные с измененными.
4. Обновленный код преобразуется в специальный kernel-файл и поступает в Dart VM.
5. Dart VM подтягивает новые версии библиотек, при этом сохраняя текущее состояние приложения.
6. Flutter вызывает перестройку тех виджетов, которые были затронуты изменениями.

🔄 Hot Restart полностью перезапускает приложение, сбрасывая абсолютно все состояния и данные. 🔄 Это происходит следующим образом:
1. Вы вносите изменения в код и запускаете Hot Restart.
2. Dart VM очищает все сохраненные состояния, все значения переменных, пересоздает все объекты заново.
3. Заново запускается метод main().
4. Приложение запускается как будто с нуля, но не затрагивается нативный код и движок Flutter.

Итак, если вы хотите узнать больше о Hot Reload и Hot Restart, и как они работают под капотом, то переходите по ссылке и читайте полную статью! 📚

Не забудьте подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter! 📱 #flutter #dart #flutterpulse #flutterpulsenews 💻👍