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

Автор канала - Михаил Зотьев (@mbixjkee).
Download Telegram
Тестирование приложения — важный процесс разработки. Если его игнорировать, скорее всего для приложения наступят тёмные времена, вы погрязнете в исправлении постоянных багов или ещё хуже прекратите поддержку. Кроме тестирования кода, нужно уделить внимание проверке поведений в приложении. Тут не обойтись без хорошего тестировщика.

Но что если вы пишете не для бизнеса, а собственный пет проект, и у вас просто нет qa отдела? Или приложение настолько разрослось, что нагрузка на тестировщика стала слишком большой?

Здесь на помощь и приходят автотесты. Организовать процесс автоматического тестирования на Flutter поможет библиотека automated_testing_framework за несколько простых шагов:

👉 Добавить TestController в приложение;
👉 Добавить TestRunner в приложение и сконфигурировать его TestController-ом;
👉 Обернуть тестируемые виджеты в Testable;
👉 Создать JSON описание запускаемого теста;
👉 Запустить проверку;

📌 Подробнее об организации автоматического тестирования в статье от Ademir Villena.

#статья
Смотрите на классную анимацию и вроде к ней не подкопаться, но не покидает чувство, что какая-то она «не настоящая»? Чаще всего объяснение довольно простое — ваша анимация линейная, а в нашем мире почти не существует линейных процессов. Здесь на помощь и приходят кривые плавности или Easing Curves. Это кривые, описывающие каким образом должна изменяться анимация со временем: ускориться, замедлиться или даже инвертироваться.

👉 Имеются во Flutter из коробки;
👉 Множество встроенных стандартных кривых в классе Curves;
👉 Возможность самостоятельно описать кривую;

📌Подробнее о работе с кривыми плавности во Flutter читайте в статье от Gordon Hayes.

#статья
12 ноября в 18:00 Иннополис и Surf проведут Flutter meetup

🎙Спикеры и эксперты:
— Андрей Савостьянов, Flutter dev, Surf
— Илья Вирник, TeamLead команды Flutter-разработки, Яндекс.Такси
— Евгений Сатуров, Flutter-TeamLead, Surf
— Сергей Кольцов, Flutter-разработчик, Яндекс.Такси

👉На митапе:
— Dependency Injection для Dart и Flutter проектов
— как сделать его декларативным (самогенерируемым) и при этом сохранить человеко-читабельность
— как подменить компоненты при тестировании
— как изолируются моки от production-кода

📌 Подробности и регистрация на странице мероприятия

#события
Последнее обновление Flutter принесло нам очень полезную утилиту — App Size Tool, которая позволяет проанализировать размер артефакта, собранного под любую платформу. Для того, чтобы просмотреть информацию о размере необходимо предварительно сгенерировать специальный файл при помощи команды

flutter build <your target platform> --analyze-size

На выходе мы получим build/<artifact_type>-code-size-analysis_<##>.json, который и хранит необходимую информацию: размер файлов Dart-кода, файлов нативного кода, ресурсов (графика, шрифты, прочие файлы).

Раздел App Size в DevTools помогает легко найти проблемы с размером сборки.

👉 Вывод подробной информации по различным частям приложения;
👉 Просмотр информации в виде дерева или таблицы;
👉 Сравнение двух отчётов, собранных с разных сборок.

📌 Подробная работа с инструментом описана в документации Flutter.

#документация
Любой Flutter-разработчик рано или поздно сталкивается с ошибками во время построения макета: различные overflow, unbounded error и многие другие. Если ошибки в логике отлаживать привычно и понятно, то что делать с этими?

Во Flutter есть удобный инструмент — Flutter Inspector, который позволяет:

👉 Просмотреть дерево виджетов;
👉 Подробно изучить свойства каждого из виджетов;
👉 Отобразить границы виджетов;
👉 Выделять узлы и перемещаться по дереву;
👉 Воспользоваться Layout Explorer, который построит структуру выделенного макета;

📌Как работать с Flutter Inspector и с его помощью решать популярные проблемы в статье от Katie Lee.
Качественное мобильное приложение должно быть производительным. Плавность UI — залог хорошего пользовательского опыта. Этому не должны мешать подкапотные процессы: тяжелые операции и вычисления. Flutter использует язык Dart, который по концепции является однопоточным, поэтому нам следует обратиться к другим инструментам. Здесь нас и выручают изоляты.

👉 Изолированный процесс исполнения некоторого Dart кода;
👉 Обладает собственной областью памяти;
👉 Использует собственный event loop;
👉 Может общаться с другими изолятами путем передачи сообщений.

📌 О том, как работать с изолятами во Flutter читайте в статье Utkarsh Sharma.

#статья
Связать мобильное приложение с веб-ресурсом можно через один из множества сервисов. Один из них Branch.io.

Через этот сервис можно проассоциировать URL веб-страниц вашего сервиса с приложением, чтобы открывать его при переходе по соответствующим ссылкам.
Важно: редирект в приложение произойдёт только в том случае, если оно уже установлено на устройстве.

📌 О том, как настроить использование Deep Links во Flutter приложении в статье от Jaimil Patel.

#статья
С минуты на минуту начнётся ещё одно мероприятие, на этот раз целиком посвященное Flutter. Большая и по-настоящему нордическая конференция Flutter Vikings пройдёт с 17 по 19 ноября.

Вас ждёт:

👉 🇫reyja
👉 🇱oki
👉 🇺llr
👉 🇹hor
👉 🇹uisto
👉 🇪ir
👉 🇷indr

Много Flutter🔥
Смотрите на сайте мероприятия


#события
Сейчас во Flutter существует сразу несколько популярных архитектур, с помощью которых строятся приложения. Одна из них — Redux. В основе лежит несколько правил:

👉 всё состояние приложения хранится только в одном месте — store;
👉 состояние (state) доступно только для чтения;
👉 для изменения состояния необходимо осуществить действие (action), которое породит новое состояние;
👉 изменения производятся с помощью чистых функций.

📌 О том, как можно приготовить Redux для Flutter в статье Paulina Szklarska.

#статья
4-5 декабря в четвёртый раз пройдёт конференция русскоязычного сообщества Dart и Flutter разработчиков DartUP 2020. В этом году — онлайн. Спикеры из Google, Wrike, Yandex, EPAM и др. Я и мой коллега Женя Сатуров тоже в программе.

👉Будет два потока докладов по Dart и Flutter: один на русском, другой на английском.

Онлайн-формат позволяет не обращать внимание на границы, часовые пояса и трудности с логистикой, поэтому организаторы приглашают самых интересных спикеров из разных уголков мира, которые поделятся практическим опытом и новостями об экосистеме Dart.

Несмотря на онлайн, организаторы обещают сохранить тёплую и неформальную атмосферу предыдущих «дартапов» и доброжелательный дух сообщества.

Вас ждёт много новых форматов, а не просто «говорящие головы» три часа подряд.

Регистрация бесплатная на сайте Dartup.ru.
#события
Для показа сообщений пользователю довольно часто используется SnackBar. До текущего момента, взаимодействие с ним осуществлялось через Scaffold с использованием BuildContext. У подобного подхода есть ряд недостатков, которые могут привести к ошибкам:

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

Данные проблемы призван решить ScaffoldMessenger, который можно получить из MaterialApp. Управление SnackBar теперь можно осуществлять с его помощью. Пока только в версиях Flutter 1.23.0-13.0.pre. Ждём в stable.

📌 Это breaking change. О том как осуществить миграцию читайте в документации Flutter.

#документация #breaking_changes
Театр начинается с вешалки, а приложение с загрузочного экрана. Он необходим нам в целом ряде случаев:

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

📌 О том, как реализовать Splash Screen для Flutter приложения читайте в статье Diego Velasquez.

#статья
Недавно анонсировали переход null safety для Dart и Flutter в Beta. Это последний шаг перед релизом фичи в начале 2021 года.

Вот что важно знать про null safety уже сейчас:

👉 Non-nullable значения переменных по-умолчанию;
👉 Обратная совместимость: вы сами решите что и когда перевести на данный режим, даже в одном проекте сможете использовать оба режима;
👉 Оптимизированный код не только более надёжный с точки зрения кода, но и улучшенный на уровне компиляции, более производительный в исполнении, бинарные файлы меньшего размера.

📌 О том, как обеспечить переход к null safety коду в статье-анонсе от Michael Thomsen.

#статья
Судя по всему, переход на null safety пройдёт безболезненно не у всех. Поддержка null safety для Mockito принесла в библиотеку серьёзные изменения.

Mockito — популярная библиотека для мокирования объектов, использующаяся при написании модульных тестов. Изменения null safety сломали целый ряд механизмов, на которых строилась работа этой библиотеки:

👉 Сопоставление аргументов при проверке;
👉 Возвращаемые значения из моков.

Разработчики нашли несколько возможных решений этих проблем:

👉 Использование кодогенерации для создания моков;
👉 Ручное переопределение всех публичных методов, возвращающих non-nullable или использующих их в качестве параметров.

📌 Подробнее о предложенных подходах можно прочитать в специальном readme библиотеки.
#breaking_changes
Стартовал очередной квартальный опрос от команды Flutter, который продлится до 30 ноября 2020.

С помощью данных опросов команда Fluter собирает актуальный фидбек о работе фреймворка и выбирает направления развития.

📌 Вы можете лично поучаствовать в улучшении Flutter и пройти опрос по ссылке
Surf собирает идеи для развития Open Source.

Я и мои коллеги из Surf больше года назад запустили проект SurfGear. SurfGear — это open source набор библиотек, стандартов, инструментов для разработки на Flutter.

Мы с коллегами участвуем в развитии Flutter-сообщества и приглашаем вас присоединиться к этому.

👉 Давайте вместе подумаем, что мы можем сделать для мира Flutter-разработки.

Присылайте любые ваши идеи: как улучшить работу с фрейморком? чего не хватает, какие боли хотите решить? как сделать проще и лучше? и любые другие предложение.

🌐 Сбор идей для Open Source проводим в рамках DartUP 2020. Surf — партнёр мероприятия.

Пять лучших реализуем в рамках проекта SurfGear.

Ждём ваши предложения и заявки на код-ревью. Подробности👇
https://dartup.surf.ru/

#события
Во многих современных приложениях важную роль играют пуш-уведомления. Для работы с ними во Flutter можно использовать Firebase Cloud Messaging. Плохая новость для тех, кто хочет использовать сервис в связке с Flutter Web: «Web is currently not supported. See the FlutterFire roadmap».

Но не спешите расстраиваться. До выхода официальной поддержки можно воспользоваться решением от Felix Hope для интеграции Firebase Cloud Messaging и Flutter Web.

📌 Подробнее познакомиться с этим решением в статье.

#статья
Ещё одна приятная новость для тех, кому уже не терпится использовать в своих Web-приложениях Flutter. На днях была добавлена поддержка Cloud Storage для Web.
Теперь для того, чтобы воспользоваться всеми удобствами облачного хранилища, необходимо всего лишь добавить строку

<noscript src="https://www.gstatic.com/firebasejs/7.20.0/firebase-storage.js"></noscript>

в index.html файл вашего приложения.

📌 Подробнее о подключении и использовании Cloud Storage в официальной документации.

#документация
Падения могут испортить любое приложение, поэтому с ними надо нещадно бороться. Для этого нам нужны различные инструменты, например, Sentry.
Это инструмент мониторинга ошибок, у которого множество плюсов:

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

📌 Познакомиться с возможностями сервиса можно на сайте.
Библиотека по ссылке

#библиотека
Продолжаем ежемесячную подборку самого важного в мире Flutter. Давайте вспомним, чем же порадовал нас ноябрь.

👉 с 11 по 14 ноября прошел Mobius 2020 с внушительным количеством докладов, посвященных Flutter;
👉 с 17 по 19 ноября прошел Flutter Vikings;
👉 команда Google провела опрос за четвертый квартал 2020 года;
👉 анонс Beta null safety Dart.

Самый популярный пост месяца:
❤️ Flutter App Size Tool

#главное
Сегодня и завтра DartUp 2020.
В этом году организаторы и партнёры приготовили много интересного:

📌Что будет?
— Трансляция докладов на русском
— Трансляция на английском
— Можно сразиться в бою 1 на 1 с соперником, решая алгоритмические задачки на Dart и JS:
— Принять участие в розыгрыше ссылка
— Предложить идею для Open Source и код-ревью — по ссылке

Ну и приглашаю сегодня на свой доклад:
📌13:00 — Миша Зотьев, Flutter под капотом

#события