Забудьте про Shimmer Widgets: Skeletonizer - умный способ загрузки UI в Flutter
Flutter-разработчики, вы устали писать повторяющийся код для создания шиммер-эффектов на каждом экране вашего приложения? Теперь есть решение!
В этой статье мы расскажем о Skeletonizer - библиотеке, которая автоматически превращает ваш существующий UI в скелетные загрузчики без дополнительных усилий. Вы узнаете, как Skeletonizer решает проблему дублирования кода, как использовать его для создания скелетных плейсхолдеров, и как настроить его под свои нужды.
С помощью Skeletonizer вы сможете создавать скелетные загрузчики, используя ваш реальный UI, без необходимости писать фальшивые плейсхолдеры. Библиотека предоставляет различные возможности для настройки, включая разные эффекты, такие как ShimmerEffect, SolidEffect и PulseEffect.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #uiux #loadinganimation #skeletonizer #shimmer #flutterlibrary
Flutter-разработчики, вы устали писать повторяющийся код для создания шиммер-эффектов на каждом экране вашего приложения? Теперь есть решение!
В этой статье мы расскажем о Skeletonizer - библиотеке, которая автоматически превращает ваш существующий UI в скелетные загрузчики без дополнительных усилий. Вы узнаете, как Skeletonizer решает проблему дублирования кода, как использовать его для создания скелетных плейсхолдеров, и как настроить его под свои нужды.
С помощью Skeletonizer вы сможете создавать скелетные загрузчики, используя ваш реальный UI, без необходимости писать фальшивые плейсхолдеры. Библиотека предоставляет различные возможности для настройки, включая разные эффекты, такие как ShimmerEffect, SolidEffect и PulseEffect.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #uiux #loadinganimation #skeletonizer #shimmer #flutterlibrary
👍1😁1
Освоение навигации назад в Flutter: почему back_button_interceptor лучше, чем PopScope
Вы когда-нибудь сталкивались с проблемами при обработке кнопки "Назад" в Android при разработке Flutter-приложений? Когда приложение становится сложнее, стандартный PopScope начинает казаться ограниченным.
В этой статье рассматривается пакет back_button_interceptor, который предлагает глобальный, гибкий и приоритетный контроль над поведением кнопки "Назад" во всём приложении. Вы узнаете, чем он отличается от PopScope, когда его использовать и как он может упростить навигацию в вашем приложении.
Основное внимание уделяется сравнению PopScope и back_button_interceptor, а также примерам использования последнего для более сложной навигации, включая вложенные навигаторы и вкладки. Вы увидите, как back_button_interceptor позволяет добавлять несколько обработчиков с приоритетом и управлять ими динамически.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #backbutton #navigation
Вы когда-нибудь сталкивались с проблемами при обработке кнопки "Назад" в Android при разработке Flutter-приложений? Когда приложение становится сложнее, стандартный PopScope начинает казаться ограниченным.
В этой статье рассматривается пакет back_button_interceptor, который предлагает глобальный, гибкий и приоритетный контроль над поведением кнопки "Назад" во всём приложении. Вы узнаете, чем он отличается от PopScope, когда его использовать и как он может упростить навигацию в вашем приложении.
Основное внимание уделяется сравнению PopScope и back_button_interceptor, а также примерам использования последнего для более сложной навигации, включая вложенные навигаторы и вкладки. Вы увидите, как back_button_interceptor позволяет добавлять несколько обработчиков с приоритетом и управлять ими динамически.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #backbutton #navigation
Gradle упрощено: Подпись и выпуск вашего приложения Flutter
Вы уже пережили лабиринт Gradle и разобрались с версиями? Теперь пришло время пройти главное испытание — подписать и выпустить ваше приложение!
В этой статье вы узнаете, почему подпись приложения имеет значение, как сгенерировать хранилище ключей с помощью keytool, как получить отпечатки SHA1 и SHA256 для Firebase и Google API, как настроить build.gradle безопасно с помощью local.properties, и как собрать подписанные APK и AAB.
В статье подробно описаны все шаги, необходимые для выпуска вашего Flutter-приложения, от создания ключа до настройки Gradle. Вы узнаете, чем отличается отладочный ключ от релизного, как сгенерировать ключ с помощью keytool на Windows и macOS/Linux, и как использовать local.properties для безопасного хранения конфиденциальной информации.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #gradle #appdevelopment #mobiledevelopment #flutterdev #flutterdevelopers
Вы уже пережили лабиринт Gradle и разобрались с версиями? Теперь пришло время пройти главное испытание — подписать и выпустить ваше приложение!
В этой статье вы узнаете, почему подпись приложения имеет значение, как сгенерировать хранилище ключей с помощью keytool, как получить отпечатки SHA1 и SHA256 для Firebase и Google API, как настроить build.gradle безопасно с помощью local.properties, и как собрать подписанные APK и AAB.
В статье подробно описаны все шаги, необходимые для выпуска вашего Flutter-приложения, от создания ключа до настройки Gradle. Вы узнаете, чем отличается отладочный ключ от релизного, как сгенерировать ключ с помощью keytool на Windows и macOS/Linux, и как использовать local.properties для безопасного хранения конфиденциальной информации.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #gradle #appdevelopment #mobiledevelopment #flutterdev #flutterdevelopers
Настройка окружений для Flutter-приложений: пошаговое руководство
Вы когда-нибудь сталкивались с проблемой управления несколькими версиями Flutter-приложения для разных окружений? Теперь вы можете легко переключаться между dev, staging и production средами с помощью Flutter Flavors!
В этой статье вы узнаете, как настроить Android Flavors, сконфигурировать iOS схемы, использовать FlavorConfig модель для управления переменными окружения в Dart, а также запускать и собирать приложения для разных окружений. Вы получите практические советы и примеры кода, чтобы упростить управление конфигурациями приложения.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #softwaredevelopment
Вы когда-нибудь сталкивались с проблемой управления несколькими версиями Flutter-приложения для разных окружений? Теперь вы можете легко переключаться между dev, staging и production средами с помощью Flutter Flavors!
В этой статье вы узнаете, как настроить Android Flavors, сконфигурировать iOS схемы, использовать FlavorConfig модель для управления переменными окружения в Dart, а также запускать и собирать приложения для разных окружений. Вы получите практические советы и примеры кода, чтобы упростить управление конфигурациями приложения.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #softwaredevelopment
📊 Обработка файлов Excel как профессионал во Flutter с помощью пакета excel
Работа с файлами Excel — обычное дело для многих реальных приложений, будь то бизнес-панель, инструмент анализа данных, система управления школой или приложение для инвентаризации. Пакет excel во Flutter делает чтение, создание и изменение файлов .xlsx простым и эффективным — без необходимости в нативных зависимостях.
В статье подробно рассматривается пакет excel, который представляет собой чистую Dart-библиотеку, позволяющую читать, записывать и редактировать таблицы Excel напрямую во Flutter или Dart-приложениях. Вы узнаете, как читать файлы Excel напрямую из ресурсов или путей к файлам, создавать и экспортировать .xlsx-файлы динамически, редактировать ячейки, добавлять строки и стилизовать данные программно, а также сохранять файлы локально или делиться ими с пользователями.
С помощью пакета excel вы сможете автоматизировать отчетность, управлять структурированными данными и создавать профессиональные функции — все это внутри вашего Flutter-приложения. Если ваше приложение работает с табличными данными, этот пакет может сэкономить вам часы ручной работы.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Напишите, чтобы мы знали, понравилась ли вам эта рубрика!
FlutterPulse — канал о мире Flutter!
#FlutterPulseMedium ✨
#flutter #dart #excel #datahandling #FlutterPulse #FlutterDev #MobileDevelopment #AppDevelopment
Работа с файлами Excel — обычное дело для многих реальных приложений, будь то бизнес-панель, инструмент анализа данных, система управления школой или приложение для инвентаризации. Пакет excel во Flutter делает чтение, создание и изменение файлов .xlsx простым и эффективным — без необходимости в нативных зависимостях.
В статье подробно рассматривается пакет excel, который представляет собой чистую Dart-библиотеку, позволяющую читать, записывать и редактировать таблицы Excel напрямую во Flutter или Dart-приложениях. Вы узнаете, как читать файлы Excel напрямую из ресурсов или путей к файлам, создавать и экспортировать .xlsx-файлы динамически, редактировать ячейки, добавлять строки и стилизовать данные программно, а также сохранять файлы локально или делиться ими с пользователями.
С помощью пакета excel вы сможете автоматизировать отчетность, управлять структурированными данными и создавать профессиональные функции — все это внутри вашего Flutter-приложения. Если ваше приложение работает с табличными данными, этот пакет может сэкономить вам часы ручной работы.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Напишите, чтобы мы знали, понравилась ли вам эта рубрика!
FlutterPulse — канал о мире Flutter!
#FlutterPulseMedium ✨
#flutter #dart #excel #datahandling #FlutterPulse #FlutterDev #MobileDevelopment #AppDevelopment
❤1
20 полезных расширений Flutter, которые сэкономят вам часы каждый день
Хотите упростить свой код и повысить производительность? Dart extensions помогут вам добавить кастомные методы к существующим классам без изменения исходного кода!
В этой статье мы рассмотрим 20 реальных примеров Flutter расширений, которые сделают ваш код чище, быстрее и более удобным. Вот некоторые из них:
✅ String — проверка на пустоту или пробелы
✅ Валидация email-адресов
✅ Безопасное преобразование String в Int
✅ Форматирование валюты и даты
✅ Добавление отступов и жестов к виджетам
✅ Расширения для работы с List, Bool, Double и Color
Эти расширения — настоящие "суперспособности" для вашего Flutter-кода. Они делают его чище, более читаемым и легче поддерживаемым. Вы можете сгруппировать их в один файл и импортировать везде, где нужно.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programmingtips
Хотите упростить свой код и повысить производительность? Dart extensions помогут вам добавить кастомные методы к существующим классам без изменения исходного кода!
В этой статье мы рассмотрим 20 реальных примеров Flutter расширений, которые сделают ваш код чище, быстрее и более удобным. Вот некоторые из них:
✅ String — проверка на пустоту или пробелы
✅ Валидация email-адресов
✅ Безопасное преобразование String в Int
✅ Форматирование валюты и даты
✅ Добавление отступов и жестов к виджетам
✅ Расширения для работы с List, Bool, Double и Color
Эти расширения — настоящие "суперспособности" для вашего Flutter-кода. Они делают его чище, более читаемым и легче поддерживаемым. Вы можете сгруппировать их в один файл и импортировать везде, где нужно.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programmingtips
Настройка окружений в Flutter: пошаговое руководство
Устали переключаться между разными версиями приложения вручную? Flutter Flavors спешит на помощь!
В этой статье вы узнаете, как настроить разные окружения для вашего Flutter-приложения, используя Flavors. Вы научитесь создавать отдельные версии приложения для разработки, тестирования и продакшена, а также узнаете, как управлять конфигурациями и переменными окружения.
✅ Основные темы статьи:
👉 Использование Flutter Flavors для разделения окружений
⚙️ Настройка Android Flavors и iOS Schemes
📌 Создание FlavorConfig модели для управления переменными окружения
🔹 Запуск и сборка приложения для разных окружений
Вы узнаете, как настроить Android productFlavors и iOS schemes, а также как использовать FlavorConfig модель для централизованного управления конфигурациями. Кроме того, вы получите доступ к рабочему примеру на GitHub.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #tutorial
Устали переключаться между разными версиями приложения вручную? Flutter Flavors спешит на помощь!
В этой статье вы узнаете, как настроить разные окружения для вашего Flutter-приложения, используя Flavors. Вы научитесь создавать отдельные версии приложения для разработки, тестирования и продакшена, а также узнаете, как управлять конфигурациями и переменными окружения.
✅ Основные темы статьи:
👉 Использование Flutter Flavors для разделения окружений
⚙️ Настройка Android Flavors и iOS Schemes
📌 Создание FlavorConfig модели для управления переменными окружения
🔹 Запуск и сборка приложения для разных окружений
Вы узнаете, как настроить Android productFlavors и iOS schemes, а также как использовать FlavorConfig модель для централизованного управления конфигурациями. Кроме того, вы получите доступ к рабочему примеру на GitHub.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #programming #tutorial
🔥1
Flutter Flow: Шаблон панели управления Place Manager
Узнайте, как легко создавать интерактивные карты с полигонами, полилиниями и маркерами в Flutter Flow! 🔥
В этой статье рассматривается шаблон панели управления Place Manager, который позволяет добавлять и редактировать места, полигоны и полилинии на карте. Вы узнаете, как использовать готовые страницы и виджеты, а также как настроить базу данных Supabase и Firebase.
✅ Основные возможности шаблона:
👉 Создание и редактирование мест с кастомными маркерами
🔹 Добавление полигонов и полилиний на карту
⚙️ Настройка свойств полигонов и полилиний (цвет, прозрачность, толщина линий)
📌 Использование готовых страниц и виджетов для отображения данных на карте
В статье подробно описаны шаги по настройке базы данных, созданию кастомных функций и добавлению данных на карту. Вы также узнаете, как использовать шаблон для создания собственных приложений с интерактивными картами.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Оцените рубрику и посмотрите другие новости по хэштегу #FlutterPulseMedium
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #mapping #Supabase #Firebase
Узнайте, как легко создавать интерактивные карты с полигонами, полилиниями и маркерами в Flutter Flow! 🔥
В этой статье рассматривается шаблон панели управления Place Manager, который позволяет добавлять и редактировать места, полигоны и полилинии на карте. Вы узнаете, как использовать готовые страницы и виджеты, а также как настроить базу данных Supabase и Firebase.
✅ Основные возможности шаблона:
👉 Создание и редактирование мест с кастомными маркерами
🔹 Добавление полигонов и полилиний на карту
⚙️ Настройка свойств полигонов и полилиний (цвет, прозрачность, толщина линий)
📌 Использование готовых страниц и виджетов для отображения данных на карте
В статье подробно описаны шаги по настройке базы данных, созданию кастомных функций и добавлению данных на карту. Вы также узнаете, как использовать шаблон для создания собственных приложений с интерактивными картами.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Оцените рубрику и посмотрите другие новости по хэштегу #FlutterPulseMedium
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #mapping #Supabase #Firebase
Вы используете буфер обмена Flutter неправильно (и упускаете эти 10 мощных функций)
Кнопка "Копировать в буфер обмена" в вашем приложении может делать гораздо больше, чем просто копировать текст! Давайте откроем скрытые супервозможности буфера обмена Flutter.
В этой статье мы рассмотрим 10 мощных функций буфера обмена, которые могут улучшить пользовательский опыт вашего приложения. Вы узнаете, как реализовать умное копирование и вставку, работать с форматированным текстом, обрабатывать изображения в буфере обмена, мониторить изменения в буфере обмена и многое другое.
🔹 Улучшите пользовательский опыт с помощью умного копирования и вставки
🔹 Работайте с форматированным текстом и изображениями в буфере обмена
🔹 Мониторьте изменения в буфере обмена для реализации умных функций
🔹 Обеспечьте безопасность конфиденциальных данных с помощью автоматического удаления из буфера обмена
🔹 Реализуйте историю буфера обмена для опытных пользователей
🇷🇺 Читать статью на русском:
Часть 1
Часть 2
🇬🇧 Read the article in English:
Part 1 → https://telegra.ph/Youre-Using-Flutters-Clipboard-Wrong-And-Missing-These-10-Powerful-Features-Part-1-01-20
Part 2 → https://telegra.ph/Youre-Using-Flutters-Clipboard-Wrong-And-Missing-These-10-Powerful-Features-Part-2-01-20
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам эта рубрика?
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #stateManagement #clipboard #uxdesign #flutterdev #fluttertutorial #flutterbestpractices #clipboardmanagement #flutterux #securedata #mobileapp #flutterpatterns #appdevelopment #flutterwidget #dartlang #fluttercommunity
Кнопка "Копировать в буфер обмена" в вашем приложении может делать гораздо больше, чем просто копировать текст! Давайте откроем скрытые супервозможности буфера обмена Flutter.
В этой статье мы рассмотрим 10 мощных функций буфера обмена, которые могут улучшить пользовательский опыт вашего приложения. Вы узнаете, как реализовать умное копирование и вставку, работать с форматированным текстом, обрабатывать изображения в буфере обмена, мониторить изменения в буфере обмена и многое другое.
🔹 Улучшите пользовательский опыт с помощью умного копирования и вставки
🔹 Работайте с форматированным текстом и изображениями в буфере обмена
🔹 Мониторьте изменения в буфере обмена для реализации умных функций
🔹 Обеспечьте безопасность конфиденциальных данных с помощью автоматического удаления из буфера обмена
🔹 Реализуйте историю буфера обмена для опытных пользователей
🇷🇺 Читать статью на русском:
Часть 1
Часть 2
🇬🇧 Read the article in English:
Part 1 → https://telegra.ph/Youre-Using-Flutters-Clipboard-Wrong-And-Missing-These-10-Powerful-Features-Part-1-01-20
Part 2 → https://telegra.ph/Youre-Using-Flutters-Clipboard-Wrong-And-Missing-These-10-Powerful-Features-Part-2-01-20
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам эта рубрика?
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #stateManagement #clipboard #uxdesign #flutterdev #fluttertutorial #flutterbestpractices #clipboardmanagement #flutterux #securedata #mobileapp #flutterpatterns #appdevelopment #flutterwidget #dartlang #fluttercommunity
Flutter: Использование изображения в качестве фона экрана
Вы когда-нибудь сталкивались с ошибкой "shader compilation too long" при использовании градиента в качестве фона экрана? Автор статьи нашёл решение — использовать изображение вместо градиента!
В статье рассматриваются приёмы использования изображения в качестве фона экрана в Flutter, обсуждаются вопросы производительности и кэширования изображений. Автор делится советами, как правильно выбрать изображение, как его кэшировать и как использовать специальный виджет
✅ Основные темы статьи:
👉 Использование изображения в качестве фона экрана
⚙️ Кэширование изображений для повышения производительности
📌 Создание специального виджета
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #uiux
Вы когда-нибудь сталкивались с ошибкой "shader compilation too long" при использовании градиента в качестве фона экрана? Автор статьи нашёл решение — использовать изображение вместо градиента!
В статье рассматриваются приёмы использования изображения в качестве фона экрана в Flutter, обсуждаются вопросы производительности и кэширования изображений. Автор делится советами, как правильно выбрать изображение, как его кэшировать и как использовать специальный виджет
BgScaffold для упрощения процесса.✅ Основные темы статьи:
👉 Использование изображения в качестве фона экрана
⚙️ Кэширование изображений для повышения производительности
📌 Создание специального виджета
BgScaffold для упрощения процесса🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledevelopment #appdevelopment #uiux