Релиз iOS 14 принёс некоторые проблемы с которыми вы можете столкнуться в процессе разработки на Flutter.
👉 На физических устройствах с iOS 14 команда flutter run не работает на версиях Flutter до 1.20.4;
👉 Чтобы избежать ложных показов Clipboard Notifications при использовании текстовых полей на iOS, придётся обновиться до Flutter 1.20.4;
👉 Проблема с отрисовкой шрифта San Francisco, который является стандартным для Cupertino виджетов, решена только в версии Flutter 1.22;
👉 Из-за изменений в политике безопасности в iOS 14, каждому приложению для дебага нужно дать разрешение на работу с локальной сетью. Иначе Hot Reload и DevTools работать не будут;
👉 На физических устройствах с iOS 14 запуск дебаг версии приложения без подключенного дебаггера теперь невозможен. Это значит, что установив дебаг версию, вы не сможете запустить это приложение тапом по иконке, переходом по уведомлению или через Deep Link. Интегрированные Flutter-модули также будут экстренно завершаться с ошибкой при запуске приложения перечисленными способами.
📌Подробнее в статье «Developing for iOS 14»
#документация
👉 На физических устройствах с iOS 14 команда flutter run не работает на версиях Flutter до 1.20.4;
👉 Чтобы избежать ложных показов Clipboard Notifications при использовании текстовых полей на iOS, придётся обновиться до Flutter 1.20.4;
👉 Проблема с отрисовкой шрифта San Francisco, который является стандартным для Cupertino виджетов, решена только в версии Flutter 1.22;
👉 Из-за изменений в политике безопасности в iOS 14, каждому приложению для дебага нужно дать разрешение на работу с локальной сетью. Иначе Hot Reload и DevTools работать не будут;
👉 На физических устройствах с iOS 14 запуск дебаг версии приложения без подключенного дебаггера теперь невозможен. Это значит, что установив дебаг версию, вы не сможете запустить это приложение тапом по иконке, переходом по уведомлению или через Deep Link. Интегрированные Flutter-модули также будут экстренно завершаться с ошибкой при запуске приложения перечисленными способами.
📌Подробнее в статье «Developing for iOS 14»
#документация
Любой труд должен быть вознаграждён. Если у вас есть небольшое полезное приложение, но о монетизации его вы ещё не задумывались, самое время это исправить. Google AdMob для Flutter поможет с помощью ненавязчивой рекламы получать небольшой доход от вашего творения.
Чтобы настроить AdMob — выполните несколько простых шагов:
👉 Зарегистрируйтесь на AdMob и создайте App ID для вашего приложения;
👉 Подключите в pubspec.yaml зависимость firebase_admob;
👉 Для Android включите в AndroidManifest.xml данные App ID, добавив
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ваш_App_ID"/>;
👉 Для iOS добавьте в Info.plist данные App ID:
<key>GADApplicationIdentifier</key>
<string>ваш_App_ID</string>
👉 Интегрируйте Firebase в приложение, следуя инструкции https://firebase.flutter.dev/docs/overview, если ещё этого не сделали;
👉 Создайте и используйте рекламные вставки в самом приложении с помощью BannerAd или InterstitialAd.
📌 Подробнее в статье от Dulanka Karunasena.
Чтобы настроить AdMob — выполните несколько простых шагов:
👉 Зарегистрируйтесь на AdMob и создайте App ID для вашего приложения;
👉 Подключите в pubspec.yaml зависимость firebase_admob;
👉 Для Android включите в AndroidManifest.xml данные App ID, добавив
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ваш_App_ID"/>;
👉 Для iOS добавьте в Info.plist данные App ID:
<key>GADApplicationIdentifier</key>
<string>ваш_App_ID</string>
👉 Интегрируйте Firebase в приложение, следуя инструкции https://firebase.flutter.dev/docs/overview, если ещё этого не сделали;
👉 Создайте и используйте рекламные вставки в самом приложении с помощью BannerAd или InterstitialAd.
📌 Подробнее в статье от Dulanka Karunasena.
firebase.flutter.dev
FlutterFire Overview | FlutterFire
<img
К архитектуре, построенной на Bloc, можно относиться по разному: кто-то от неё в восторге, а кому-то она не нравится. Но кто будет спорить с тем, что для Flutter комьюнити она уже стала знаковой?
На днях библиотеке Bloc от Felix Angelov исполнилось 2 года. 🎉
📌О том, каким был путь от первого коммита до Flutter Favorite с 5700 звёздочек на GitHub — почитайте в статье от автора этой библиотеки Felix Angelov.
#новости
На днях библиотеке Bloc от Felix Angelov исполнилось 2 года. 🎉
📌О том, каким был путь от первого коммита до Flutter Favorite с 5700 звёздочек на GitHub — почитайте в статье от автора этой библиотеки Felix Angelov.
#новости
👍1
Любите порядок во всём и хотите, чтобы даже логи в приложении ходили строем с флагами и гимнами? У меня есть решение — попробуйте библиотеку Logger от Simon Leier.
Этот простой в использовании логгер позволит выводить красивые и легкочитаемые сообщения в консоль. В этой библиотеке есть ещё один интересный режим — вызов LogConsole.open(context) откроет экран с логами прямо на устройстве. Или же, для открытия этого экрана, телефон можно просто потрясти 📳.
#библиотека
Этот простой в использовании логгер позволит выводить красивые и легкочитаемые сообщения в консоль. В этой библиотеке есть ещё один интересный режим — вызов LogConsole.open(context) откроет экран с логами прямо на устройстве. Или же, для открытия этого экрана, телефон можно просто потрясти 📳.
#библиотека
Надоело держать на компьютере множество эмуляторов, чтобы проверять как приложение выглядит на разных устройствах?
Библиотека Device Preview for Flutter от Aloïs Deniel избавит от такой необходимости. Она предоставляет виджет DevicePreview, который выглядит как реальное устройство с запущенным на нём приложением. Удобнее всего будет работать с этим виджетом на планшете или его эмуляторе.
Гибкие настройки, позволят:
👉 На лету переключать множество доступных вариантов Android и iOS устройств;
👉 Задавать кастомные настройки высоты и ширины устройства;
👉 Менять ориентацию устройства;
👉 Менять настройки языка, темную/светлую тему, скейлинг текста;
👉 Делать скриншоты экрана.
#библиотека
Библиотека Device Preview for Flutter от Aloïs Deniel избавит от такой необходимости. Она предоставляет виджет DevicePreview, который выглядит как реальное устройство с запущенным на нём приложением. Удобнее всего будет работать с этим виджетом на планшете или его эмуляторе.
Гибкие настройки, позволят:
👉 На лету переключать множество доступных вариантов Android и iOS устройств;
👉 Задавать кастомные настройки высоты и ширины устройства;
👉 Менять ориентацию устройства;
👉 Менять настройки языка, темную/светлую тему, скейлинг текста;
👉 Делать скриншоты экрана.
#библиотека
Flutter 1.22 принёс нам новые кнопки. Несмотря на то, что старые останутся доступны, новые удобнее стилизовать. Каждой кнопке из нового набора соответствует своя собственная тема. Эти темы содержат в себе все основные стилевые настройки, которые можно применять к кнопкам.
Обновлённые кнопки:
👉 TextButton с TextButtonTheme вместо FlatButton;
👉 ContainedButton с ContainedButtonTheme вместо RaisedButton;
👉 OutlinedButton с OutlinedButtonTheme вместо OutlineButton;
📌 Подробнее о работе с новыми кнопками в статье от Jelena Jovanoski.
Обновлённые кнопки:
👉 TextButton с TextButtonTheme вместо FlatButton;
👉 ContainedButton с ContainedButtonTheme вместо RaisedButton;
👉 OutlinedButton с OutlinedButtonTheme вместо OutlineButton;
📌 Подробнее о работе с новыми кнопками в статье от Jelena Jovanoski.
Если вы работает одновременно над несколькими проектами, использующими для сборки разные версии Flutter, либо просто любите поэкспериментировать с фичами из beta-канала, вы наверняка устали каждый раз ждать, пока скачается и установится нужная версия фреймворка.
Вам поможет Flutter Version Manager от Leo Farias. Это решение упрощает управление версиями фреймворка, позволяя установить параллельно несколько версий и быстро переключаться между ними.
👉 fvm install stable/beta/<version> установит нужную версию;
👉 fvm use stable/beta/<version> переключит на необходимую вам в данный момент версию Flutter;
❗Не забывайте, что при использовании fvm, все нужные flutter-команды также необходимо вызывать через fvm (например, fvm flutter doctor).
#библиотека
Вам поможет Flutter Version Manager от Leo Farias. Это решение упрощает управление версиями фреймворка, позволяя установить параллельно несколько версий и быстро переключаться между ними.
👉 fvm install stable/beta/<version> установит нужную версию;
👉 fvm use stable/beta/<version> переключит на необходимую вам в данный момент версию Flutter;
❗Не забывайте, что при использовании fvm, все нужные flutter-команды также необходимо вызывать через fvm (например, fvm flutter doctor).
#библиотека
Как часто вам приходится начинать разработку, пока backend ещё не готов? 😱
Если вы не живёте в идеальном мире, скорее всего постоянно. Вместо того, чтобы хардкодить данные, которые вы ожидаете и тратить на это драгоценное время разработки, попробуйте Faker от Jesper Håkansson для генерации фейковых данных.
Он поддерживает множество различных категорий данных, среди которых:
👉 internet: email, различные ip адреса и имена пользователей;
👉 currency: коды и названия валют;
👉 person: имена, фамилии, префиксы обращений;
👉 имеется возможность генерировать рандомный текст, наборы чисел, списки объектов и много другое.
#библиотека
Если вы не живёте в идеальном мире, скорее всего постоянно. Вместо того, чтобы хардкодить данные, которые вы ожидаете и тратить на это драгоценное время разработки, попробуйте Faker от Jesper Håkansson для генерации фейковых данных.
Он поддерживает множество различных категорий данных, среди которых:
👉 internet: email, различные ip адреса и имена пользователей;
👉 currency: коды и названия валют;
👉 person: имена, фамилии, префиксы обращений;
👉 имеется возможность генерировать рандомный текст, наборы чисел, списки объектов и много другое.
#библиотека
Если вы хотя бы раз работали в хорошо налаженной автоматизированной системе, вряд ли сможете снова вернуться к «ручной» сборке. CI/CD успешно закрепился в профессиональной жизни разработчиков как инструмент, упрощающий жизнь и решающий массу рутинных задач. Это настолько удобно, что хочется использовать CI/CD даже в пет-проектах.
Существует множество сервисов, предоставляющих готовые настраиваемые инструменты. Codemagic — один из них.
👉 легко настраивается из коробки для Flutter, Android, iOS, React Native;
👉 полная интеграция с Azure DevOps, GitHub, GitLab, Bitbucket и другими git-репозиториями;
👉 удобная публикация в популярных каналах распространения, среди которых App Store, Google Play Store, TestFlight, Firebase App Distribution, и многие другие;
👉 имеется бесплатный вариант подписки с 500 минутами на macOS VM;
Смотрите короткий видеотуториал по настройке Codemagic CI/CD от авторов этого решения.
Существует множество сервисов, предоставляющих готовые настраиваемые инструменты. Codemagic — один из них.
👉 легко настраивается из коробки для Flutter, Android, iOS, React Native;
👉 полная интеграция с Azure DevOps, GitHub, GitLab, Bitbucket и другими git-репозиториями;
👉 удобная публикация в популярных каналах распространения, среди которых App Store, Google Play Store, TestFlight, Firebase App Distribution, и многие другие;
👉 имеется бесплатный вариант подписки с 500 минутами на macOS VM;
Смотрите короткий видеотуториал по настройке Codemagic CI/CD от авторов этого решения.
🔨 В продолжение ко вчерашнему посту про CI/CD, ещё один удобный инструмент автоматизации сборки проекта — GitHub Actions.
Он предоставляет множество возможностей, среди которых:
👉 полная интеграция с GitHub с возможностью гибкой настройки, запускайте автоматизированные процессы в ответ на push, tag, issue, или новый релиз;
👉 логгирование всех шагов в realtime;
👉 использование мульти-контейнеров для тестирования;
👉 бесплатный безлимит для публичных репозиториев;
👉 для приватных репозиториев 2000 минут в месяц по бесплатному тарифу, но в случае работы на macOS минута тарифицируется x10 😞.
Про то, как выжать из GitHub Actions максимум, подробно написал мой коллега Евгений Сатуров в статье «Используем бесплатные возможности Github Actions для CI/CD на Flutter-проекте».
Читайте и выбирайте инструменты, которые будут удобны именно вам!
#статья
Он предоставляет множество возможностей, среди которых:
👉 полная интеграция с GitHub с возможностью гибкой настройки, запускайте автоматизированные процессы в ответ на push, tag, issue, или новый релиз;
👉 логгирование всех шагов в realtime;
👉 использование мульти-контейнеров для тестирования;
👉 бесплатный безлимит для публичных репозиториев;
👉 для приватных репозиториев 2000 минут в месяц по бесплатному тарифу, но в случае работы на macOS минута тарифицируется x10 😞.
Про то, как выжать из GitHub Actions максимум, подробно написал мой коллега Евгений Сатуров в статье «Используем бесплатные возможности Github Actions для CI/CD на Flutter-проекте».
Читайте и выбирайте инструменты, которые будут удобны именно вам!
#статья
С последним обновлением Dart SDK пришло важное изменение: при исходящем сетевом соединении выполняется проверка, разрешено ли использовать незащищенный протокол в данном случае.
В случае с Android Emulator, который соединяется с компьютером по 10.0.2.2, такое соединение запрещено, если это не указано напрямую в манифесте приложения. В случае, если вы решите использовать текущую beta-версию Flutter, добавьте в манифест дебаг-сборки следующий код:
<application android:usesCleartextTraffic="true">
#фиксы
В случае с Android Emulator, который соединяется с компьютером по 10.0.2.2, такое соединение запрещено, если это не указано напрямую в манифесте приложения. В случае, если вы решите использовать текущую beta-версию Flutter, добавьте в манифест дебаг-сборки следующий код:
<application android:usesCleartextTraffic="true">
#фиксы
Буквально на днях команда Google опубликовала результаты опроса за третий квартал 2020 года.
В этом опросе были собраны отзывы по темам:
👉 Flutter for web;
👉 сливеры (виджеты для создания сложных эффектов скроллинга);
👉 проблемы, характерные для конкретных платформ.
По каждому из этих вопросов, опубликовали подробный фидбек, а мой коллега Евгений Сатуров организовал перевод статьи для русскоязычного комьюнити и дал подробные комментарии по опубликованным пунктам опроса.
#статья
В этом опросе были собраны отзывы по темам:
👉 Flutter for web;
👉 сливеры (виджеты для создания сложных эффектов скроллинга);
👉 проблемы, характерные для конкретных платформ.
По каждому из этих вопросов, опубликовали подробный фидбек, а мой коллега Евгений Сатуров организовал перевод статьи для русскоязычного комьюнити и дал подробные комментарии по опубликованным пунктам опроса.
#статья
Недавно вышло обновление 0.3.0 для библиотеки flutter_portal от Remi Rousselet. С её помощью можно «прокачать» одну из немногих проблемных зон Flutter, а именно работу с оверлеем. Императивный подход к работе, сложность кастомизации, а также другие проблемы стандартного оверлея, Remi успешно исправил в своей библиотеке.
Последнее обновление принесло улучшения:
👉 более подробная документация Portal и PortalEntry;
👉 добавлены и улучшены примеры использования библиотеки;
👉 исправление багов;
👉 добавлена возможность кастомизации анимации исчезновения PortalEntry.
#библиотека
Последнее обновление принесло улучшения:
👉 более подробная документация Portal и PortalEntry;
👉 добавлены и улучшены примеры использования библиотеки;
👉 исправление багов;
👉 добавлена возможность кастомизации анимации исчезновения PortalEntry.
#библиотека
Dart packages
flutter_portal | Flutter package
Evolved Overlay/OverlayEntry - declarative not imperative, intuitive-context, and easy-alignment
Хорошо, когда все компоненты вашего приложения работают корректно. Ещё лучше, если они продолжают предсказуемо работать даже в связке друг с другом. Чтобы вовремя отлавливать проблемы, возникающие при взаимодействии различных узлов, существует интеграционное тестирование.
Для интеграционного тестирования Flutter-приложения советуем использовать библиотеку flutter_driver.
Неполный перечень того, что она умеет:
👉 профилирование производительности;
👉 тестирование с помощью скриншотов;
👉 проверка accessibility;
👉 тестирование локализации и интернационализации приложения;
👉 проверка отображения конкретных виджетов на экране.
📌 Об этих и других возможностях flutter_driver в статье Pierre-Louis Guidez.
#статья
Для интеграционного тестирования Flutter-приложения советуем использовать библиотеку flutter_driver.
Неполный перечень того, что она умеет:
👉 профилирование производительности;
👉 тестирование с помощью скриншотов;
👉 проверка accessibility;
👉 тестирование локализации и интернационализации приложения;
👉 проверка отображения конкретных виджетов на экране.
📌 Об этих и других возможностях flutter_driver в статье Pierre-Louis Guidez.
#статья
Эпидемия коронавируса заставила перейти большинство мероприятий в онлайн режим. Исключением не стал и Firebase Summit, проходивший 27 и 28 октября.
📌 С техническими сессиями можно ознакомиться на сайте.
Но для Flutter-комьюнити саммит принёс ещё и большое обновление документации:
Теперь документация построена в формате роадмапа, пройдя который вы не только научитесь правильно подключать Firebase, но и познакомитесь с его возможностями:
👉 добавление Firebase в приложение Flutter для Android;
👉 добавление Firebase в приложение Flutter для iOS;
👉 знакомство с возможностями Firebase для Flutter в виде Codelab.
Codelab учит, как работать с пакетами FlutterFire Auth и Cloud Firestore и интегрировать сервисы в ваше Flutter-приложение.
🎳 В конце роадмапа ждёт небольшой приятный сюрприз в виде викторины, в которой за правильные ответы о Firebase и Flutter можно получить бейдж для Google Developer Profile.
#документация
📌 С техническими сессиями можно ознакомиться на сайте.
Но для Flutter-комьюнити саммит принёс ещё и большое обновление документации:
Теперь документация построена в формате роадмапа, пройдя который вы не только научитесь правильно подключать Firebase, но и познакомитесь с его возможностями:
👉 добавление Firebase в приложение Flutter для Android;
👉 добавление Firebase в приложение Flutter для iOS;
👉 знакомство с возможностями Firebase для Flutter в виде Codelab.
Codelab учит, как работать с пакетами FlutterFire Auth и Cloud Firestore и интегрировать сервисы в ваше Flutter-приложение.
🎳 В конце роадмапа ждёт небольшой приятный сюрприз в виде викторины, в которой за правильные ответы о Firebase и Flutter можно получить бейдж для Google Developer Profile.
#документация
Октябрь выдался очень насыщенным на события в мире Flutter. Давайте вспомним самые важные из них в ежемесячной подборке главных тем месяца.
👉 Вышла новая версия Flutter 1.22;
🎉 День рождения Dart;
🎉 День рождения Bloc;
👉 Команда Google опубликовала результаты опроса за третий квартал 2020 года;
👉 Большое обновление документации Firebase для Flutter;
Самый популярный пост месяца:
❤️ Изменение работы с http в Dart
#главное
👉 Вышла новая версия Flutter 1.22;
🎉 День рождения Dart;
🎉 День рождения Bloc;
👉 Команда Google опубликовала результаты опроса за третий квартал 2020 года;
👉 Большое обновление документации Firebase для Flutter;
Самый популярный пост месяца:
❤️ Изменение работы с http в Dart
#главное
Мы уже не представляем общение в сети без эмодзи. С их помощью выражаем эмоции 😂😛😱, подчёркиваем важность информации ❗✅, используем в рабочих статусах ❌📅🏠. А ещё с ними очень «приятно» иметь дело разработчикам.
Почти любое действие со строкой, содержащей эмодзи, приведёт не к тому результату, который вы ожидали.
Происходит это, потому что Dart работает со строкой как последовательностью кодовых единиц UTF-16, при этом эмодзи могут восприниматься как последовательность из двух и более символов, хоть и отображаются как один. Это создаёт проблемы при вычислении длины строки, замене и поиске. Исправить подобные проблемы при работе со строками можно при помощи библиотеки characters, которая позволяет:
👉 работать со строкой как с набором графем;
👉 поддержка методов, имеющихся в String;
👉 поддержка работы с эмодзи и национальными символами;
К тому же:
👍 вошла во Flutter и может использоваться без отдельного подключения;
👍 имеется встроенная имплементация для TextField;
Статья Tao Dong.
#библиотека
Почти любое действие со строкой, содержащей эмодзи, приведёт не к тому результату, который вы ожидали.
Происходит это, потому что Dart работает со строкой как последовательностью кодовых единиц UTF-16, при этом эмодзи могут восприниматься как последовательность из двух и более символов, хоть и отображаются как один. Это создаёт проблемы при вычислении длины строки, замене и поиске. Исправить подобные проблемы при работе со строками можно при помощи библиотеки characters, которая позволяет:
👉 работать со строкой как с набором графем;
👉 поддержка методов, имеющихся в String;
👉 поддержка работы с эмодзи и национальными символами;
К тому же:
👍 вошла во Flutter и может использоваться без отдельного подключения;
👍 имеется встроенная имплементация для TextField;
Статья Tao Dong.
#библиотека
Создание доменных моделей вручную — долгий и утомительный процесс. К тому же легко допустить ошибки по невнимательности. Попробуйте переложить процесс формирования доменного слоя на специальные инструменты, например, Quicktype.
Это удобный парсер, позволяющий получить по входным данным готовую модель.
Он умеет:
👉 Работать по различным типам входных данных, среди которых Json, Json Schema, классы моделей на языке TypeScript, Postman;
👉 Конвертировать источник в модели для различных языков, в ряду которых есть и Dart;
👉 Гибкие настройки для генерируемой модели: расположение и название encoder и decoder, настройки полей модели и многое другое;
👉 Удобная веб-версия или API на ваш выбор.
#tools
Это удобный парсер, позволяющий получить по входным данным готовую модель.
Он умеет:
👉 Работать по различным типам входных данных, среди которых Json, Json Schema, классы моделей на языке TypeScript, Postman;
👉 Конвертировать источник в модели для различных языков, в ряду которых есть и Dart;
👉 Гибкие настройки для генерируемой модели: расположение и название encoder и decoder, настройки полей модели и многое другое;
👉 Удобная веб-версия или API на ваш выбор.
#tools
Большинство потребностей современный человек может удовлетворить при помощи смартфона. Заказать еду, купить билеты, вызвать такси — рука машинально тянется к нужной иконке. Поэтому важно, чтобы приложения были одинаково удобны всем пользователям, в том числе и людям с особенностями зрения.
Проверить доступность вашего приложения для людей с особым восприятием цветов, поможет библиотека Color Blindness on Flutter.
Она позволяет:
👉 Используя специальную схему colorBlindnessColorScheme, проверить как выглядит приложение для людей с разным цветовосприятием - протаномалией, протанопией, дейтеранопией и другими.
👉 Имеется возможность написания тестов для автоматизации проверки.
📌 Протестировать работу библиотеки по ссылке
#библиотека
Проверить доступность вашего приложения для людей с особым восприятием цветов, поможет библиотека Color Blindness on Flutter.
Она позволяет:
👉 Используя специальную схему colorBlindnessColorScheme, проверить как выглядит приложение для людей с разным цветовосприятием - протаномалией, протанопией, дейтеранопией и другими.
👉 Имеется возможность написания тестов для автоматизации проверки.
📌 Протестировать работу библиотеки по ссылке
#библиотека