Oh, my Flutter – Telegram
Oh, my Flutter
4.96K subscribers
1.16K photos
6 videos
1.09K links
Всё о Flutter-разработке. Новости, статьи, анонсы, вакансии и многое другое. Disclaimer: все публикуемое является частным мнением, свободно распростаняемой информацией, и не содержит рекламных интеграций.

Автор канала - Михаил Зотьев (@mbixjkee).
Download Telegram
Сейчас в ходу огромное количество различных мобильных устройств. И мы хотим, чтобы наше приложение одинаково хорошо выглядело на каждом из них. Всё более актуальным становится вопрос адаптивного дизайна.

Адаптивный дизайн, в отличии от адаптации дизайна к конкретным условиям, подразумевает использование одной кодовой базы, написанной таким образом, чтобы приложение формировало пользовательский интерфейс в соответствии с размером экрана и формой устройства. В таком случае, оно должно хорошо выглядеть как на телефоне, так и на умных часах.

📌 О том, какие принципы и подходы можно применять для реализации адаптивного дизайна во Flutter в статье от Sophia Martin.

#статья
Всем привет! Я выпустил третью часть из серии статей про подкапотное устройство Flutter. С обобщённым материалом, представленным в этих статьях, я выступил на Mobius 2020 и DartUp 2020.

В Flutter Under Hood: Owners я затронул темы:

👉 Построения кадра во Flutter;
👉 Участия в этом процессе менеджеров BuildOwner и PipelineOwner;
👉 Принципы работы BuildOwner;
👉 Принципы работы PipelineOwner;
👉 Подходы к построению макета Flutter;

📌 Подробнее читайте в моей статье.

#статья
Вот такую интригу повесили в твиттере Flutter. Ничего не понятно, но очень интересно.
А как вы думаете, что нас ждет 03.03.2021? Погнали в комменты 😉
https://twitter.com/FlutterDev/status/1339256577480683521

#события
Приятно пользоваться приложением с красивым UI. Особенно приятно если он отзывчив. Для того, чтобы приложение имело такой UI, нужно обязательно учитывать различные узкие кейсы, которые могут навредить производительности:

👉 тяжелые вычисления, там где им не место;
👉 расчет большего дерева, чем это необходимо;

📌 О популярных ошибках, которые мешают писать хороший, отзывчивый UI читайте в статье Pierre-Louis Guidez.
#статья
Если создать новый Flutter-проект из master channel, мы увидим новую директорию integration_test. Как легко догадаться из названия, лежат в ней интеграционные тесты приложения. И вместе с их появлением библиотека integration_test стала частью Flutter.

📌 Найти её можно теперь в репозитории с плагинами.
#библиотека
Для многих приложений важна привязка к пользователю. Для корректной работы в данном случае потребуется авторизация. Одним из популярных способов ее реализации является использование Firebase Auth.

Он предоставляет различные варианты авторизации:
👉 email и пароль;
👉 ссылка на email;
👉 по номеру телефона;
👉 Apple авторизация;
👉 Facebook авторизация;
👉 Twitter авторизация;
👉 Google авторизация;

Подробнее о том, как можно использовать возможности Firebase Auth, читайте в статье от Paul Ruiz.
#статья
Иногда даже хорошо написанное приложение может негативно восприниматься пользователем - ощущение дискомфорта при использовании, недоработанности. Это узкие кейсы, мешающие восприятию, работают против разработчика. Например, состояние загрузки, появляющееся на сотые доли секунды. Каждая такая ситуация портит пользовательский опыт от приложения, к тому же, причины дискомфорта не всегда очевидны. Но если вы знаете о них, считайте вы сделали большой шаг к победе над ними.

📌 О ситуациях, портящих пользовательский опыт при работе с изображениями, а также их решении, читайте в статье от Per Classon.
#статья
Довольно часто нужно акцентировать внимание пользователя на какой-то части интерфейса, или по шагам объяснить что-то пользователю. Это может быть полезным при:

👉 первоначальном входе, для объяснения как пользоваться приложением;
👉 редизайне, чтобы показать где искать привычные действия;
👉 обновлениях приложения, чтобы продемонстрировать новые возможности;
👉 объяснении как пользоваться какой-то уникальной особенностью приложения.

Реализовывать подобные обучения, не имея удобного механизма, весьма затратно. На помощь в этом вопросе может прийти библиотека showcaseview. Она предоставляет удобный и простой механизм, который позволит:

👉 пометить необходимые части интерфейса для подсветки и задать пояснения;
👉 выбрать последовательность показа этапов;
👉 запустить процесс демонстрации в нужный момент;
👉 отследить его окончание.

#библиотека
Репозиторий flutter/plugins хранит в себе множество полезных плагинов, созданных непосредственно командой Flutter. Некоторые из них были улучшены, а также получили дополнительную поддержку различных платформ силами Flutter Community.

В этом списке:
👉 battery_plus;
👉 connectivity_plus;
👉 network_info_plus;
👉 device_info_plus;
👉 package_info_plus;
👉 sensors_plus;
👉 share_plus;
👉 android_alarm_manager_plus;
👉 android_intent_plus;

Найти улучшенные плагины вы можете в репозитории.
#библиотека
У каждого из нас есть любимые инструменты разработки. Кому то нравится Android Studio или IntelliJ IDEA, кто-то без ума от VS Code. Но любой инструмент может быть еще лучше, благодаря мощной экосистеме плагинов.

Awesome Flutter Snippets от Neevash Ramdial - плагин для VS Code, значительно ускоряющий разработку. Плагин содержит огромный набор сниппетов для создания часто используемых конструкций Dart-кода для Flutter:

👉 Stateless Widget
👉 Stateful Widget
👉 Single Child Scroll View
👉 Tween Animation Builder
👉 Test
👉 Test Widgets и многие другие

📌 Прокачайте свой VS Code при помощи Awesome Flutter Snippets.
Продолжаем прокачивать VS Code. Приятно, когда IDE заметно помогает ускорить написание рутинного кода, например декларацию верстки. Плагин Flutter Tree от Marcelo Velasquez позволяет удобно описать требуемое поддерево, получив в результате его сгенерированную версию.

Например

OneChild>MultipleChild[OneChild,MultipleChild[OneChild,OneChild],OneChild>OneChild]


в результате превратится в

OneChild(
child: MultipleChild(
children: <Widget>[
OneChild(),
MultipleChild(
children: <Widget>[
OneChild(),
OneChild(),
]
),
OneChild(
child: OneChild(),
),
]
),
)


Установить расширение можно из marketplace по ссылке.
Для каждого из нас этот год был разный, но что точно, для всех он был запоминающимся. Спросите любого через 20 лет, каким был 2020 и он сразу его вспомнит. Началось все с пандемии, и тогда это выглядело как “приключение на 20 минут, зашли и вышли”. Но не тут-то было. Приключение затянулось, и нам пришлось приспособиться - поменялись наши привычки, появились новые подходы в работе, мы стали смотреть на многие вещи просто по-другому. И это дало свои плоды, продуктивность не уменьшилась, а иногда даже возросла. Ивенты не пропали, а просто поменяли свой формат, при этом расстояние и границы перестали быть проблемой. 2020 год был продуктивным! И для меня тоже. Уже 3 месяца я веду этот канал, и мне нравится результат - то комьюнити подписчиков, которое в нем собралось. You are breathtaking! Желаю каждому из вас оставаться здоровыми - это самое главное, и чтобы следующий год стал не менее продуктивным, но более размеренным и спокойным, чем этот!

Увидимся здесь, после новогодних праздников. С наступающим!
В Dart существует весьма полезный инструмент, при помощи которого можно автоматически улучшить ваш код. Для запуска выполните команду dart fix. Инструмент работает по 2 направлениям:

👉 исправление предупреждений анализатора, для которых существует стандартное решение;
👉 обновление кода для использования обновленных API.

Такая полезная утилита не могла остаться без внимания Flutter команды. Вероятно добавление подобной функциональности и во Flutter.
Почитать обсуждение по ссылке.

#fix
Недавно я выкладывал новость, что библиотека integration_test стала частью фреймворка. Почему так произошло, ведь во Flutter уже был механизм flutter_driver для end-to-end тестирования? Дело в том, что он имел ряд проблем, которые делали его менее эффективным, чем требовалось:

👉 тесты взаимодействуют с приложением на устройстве, что исключает использование ферм устройств, таких как Firebase Test Lab;
👉 наличие отдельного процесса затрудняет проверку состояния приложения;
👉 API flutter_driver оказался сложнее, чем ему следовало быть.

Эти проблемы получилось решить в integration_test. Подробнее прочитать в статье от Chris Sells.

#статья #тестирование
Привет!
Пока все мы потихоньку втягиваемся в рабочий ритм, поделитесь о чём хотите чаще читать на канале? Ниже опрос по основным рубрикам, а пожелания и предложения пишите в чат t.me/chat_ohmyflutter
Anonymous Poll
71%
статьи
60%
инструментарий
23%
фиксы
62%
советы
14%
тестирование
21%
вакансии
24%
события
Наверняка у каждого на диске есть каталог, где собрано много Flutter проектов. Но даже если проект запускался всего один раз, он занимает дополнительное дисковое пространство, оставляя артефакты после запуска.
Держите скрипт от jeroen-meijer, который выполняет рекурсивно flutter clean и освободит вам, вероятно, многие гигабайты 😉

PS: в случае, если вы пользуетесь Windows, придётся позаботиться о запуске .sh скриптов, а также объявить $SHELL переменную сред, хранящую путь до исполняемого файла оболочки для их запуска.

#fix
Во Flutter из коробки имеется множество виджетов для построения различных лейаутов. Но помимо стандартных виджетов, вы можете писать свои, которые будут покрывать более узкие варианты построения макета. Один из таких вариантов — WallLayout от David Gonzalez, который вырос в библиотеку. Он будет удобен отображения большого набора прямоугольных виджетов разных размеров в единой сетку.

📌 Подробнее о том, как пользоваться библиотекой, читайте в статье от её разработчика.

#библиотека #статья
Приложения на Flutter всё чаще реализуют кейсы, на которые никто не решился бы выбрать кроссплатформенное решение некоторое время назад. К примеру, один из проектов студии Surf — The Hole, небольшой личный Youtube для компании MediumQuality.
А может вы захотите сделать приложение с дополненной реальностью? Flutter может!

К примеру DeepAR — платформа, которая предоставляет SDK для Snapchat с фильтрами для лица, линзами для лица и эффектами.

👉 О том, как можно интегрировать её в своё Flutter приложение, читайте в статье от Promise Nzubechi Amadi.

#статья
Dart по концепции однопоточный язык, это надо учитывать во время разработки приложения на Flutter. Несмотря на наличие асинхронных операций, выполняются они в основном потоке, а это значит, что тяжёлые операции могут сказаться на производительности и отзывчивости UI.

📌 Практический пример того, как можно избежать подобных проблем, в статье от Altynbek Usenbekov.

#статья
В продолжении поста про нестандартные кейсы для Flutter. Тема машинного обучения уже некоторое время является не просто модной, но и востребованной бизнесом. В Surf разрабатывается проект, построенный на ML. Его функциональность заключается в распознавании лиц сотрудников для фиксации выхода на смену. Это нативный проект, но можно ли использовать Flutter для подобных приложений?
Во Flutter можно использовать Firebase ML — это библиотека, которая использует машинное обучение для:

👉 идентификации языка;
👉 распознавания текста;
👉 обнаружения лиц.

📌О том, как использовать Firebase ML в своём Flutter проекте, читайте в статье Paulina Szklarska.

#статьи
Тяжёлые вычисления можно выносить в изоляты. Но у использования изолята тоже есть свои минусы:

👉 имеется задержка на старт изолята;
👉 накладные расходы памяти на работу изолята;
👉 дублирование памяти при передаче данных в сообщении.

Так когда же, использование изолята будет рационально, а когда нет? Самый очевидный ответ - нужен бенчмарк.

📌 Ознакомиться с его результатами можно в статье от Charles Crete.

#статья