Flutter Pulse
709 subscribers
443 photos
1.02K links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Аннотации в Dart и Flutter! 💡
Аннотации - это специальные метки, которые можно добавлять к классам, методам, переменным и другим элементам кода. Они не изменяют сам код напрямую, но дают дополнительную информацию компилятору, инструментам или фреймворкам. 🤔
Например, вы можете использовать @deprecated, чтобы пометить метод как устаревший, или @override, чтобы указать, что метод переопределяет родительский. 📍
Есть также встроенные аннотации, такие как @pragma, и аннотации из пакета meta, такие как @immutable и @required. 📦
И, конечно, есть аннотации для генерации кода, такие как @JsonSerializable и @HiveType. 📈
Хотите узнать больше? 🤔 Тогда переходите по ссылке и читайте полную статью! 📄
И не забудьте подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter и Dart! 📣
#flutter #dart #flutterpulsenews #flutterpulse 🚀
👍21
Создай свой 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
🔥2