Дайджест июля
Hola, Amigos! Собрали в одну подборку все полезные посты и статьи июля, которые вы могли пропустить или не знать о них, если вы присоединились к нам совсем недавно. Выбирайте интересную тему и переходите по ссылкам.
🟡 Обзор пакета audio_waveforms
🟡 Трилогия о библиотеке auto_route: 1 часть, 2 часть, 3 часть
🟡 Отличия go_router и auto_route 1 часть, 2 часть
🟡 Методы тестирования в Flutter
🟡 Модульное (Unit) тестирование
🟡 Unit тесты для методов класса
🟡 Лучшие практики работы с BLoC
🟡 И ещё кое-что… Приглашаем на крупнейшую конференцию BOOST для руководителей студий и агентств. Дарим скидку 10% на билет по промокоду AMIGA10!
Всем хорошего кода и последнего месяца лета!⚙️
Hola, Amigos! Собрали в одну подборку все полезные посты и статьи июля, которые вы могли пропустить или не знать о них, если вы присоединились к нам совсем недавно. Выбирайте интересную тему и переходите по ссылкам.
Всем хорошего кода и последнего месяца лета!
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Делимся с вами 4 частью полного гайда по тестированию в Flutter, которая посвящена продвинутому модульному тестированию.
Мы уже рассмотрели:
⚙️ Unit-тестирование, Widget-тестирование, Golden-тесты и интеграционное тестирование
⚙️ Простые модульные (Unit) тесты
⚙️ Использование техник Mocking и Stubbing для тестирования классов
В новой статье еще больше усложнен класс LoginViewModel при помощи создания переменной _cache для кеширования результата, полученного от SharedPreferences. Продолжение читайте по ссылке.
Fun fact:думали, что гайд состоит из 6 статей, а оказалось, что есть еще 3, только уже не на английском, а на вьетнамском языке. Пожелайте нам удачи!
Мы уже рассмотрели:
В новой статье еще больше усложнен класс LoginViewModel при помощи создания переменной _cache для кеширования результата, полученного от SharedPreferences. Продолжение читайте по ссылке.
Fun fact:
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Мы с вами подобрались уже к 5 части гайда о тестировании в Flutter. И в ней разберемся, как использовать библиотеку Mocktail для техник mocking и stubbing в Unit-тестах.
Перевод по ссылке на Habr⬅️
Все предыдущие части можно найти тут. А в следующей статье познакомимся с новой техникой — Faking.
Пишите в чате, узнали ли вы для себя что-то новое из гайда? Делитесь впечатлениями!⚙️
Перевод по ссылке на Habr
Все предыдущие части можно найти тут. А в следующей статье познакомимся с новой техникой — Faking.
Пишите в чате, узнали ли вы для себя что-то новое из гайда? Делитесь впечатлениями!
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Вот и 6 часть гайда по тестированию в Flutter готова. В ней идет речь о тестовых двойниках: Faking vs Mocking. Давайте разбираться, как используется техника Faking?🦋
Тестовые двойники — объекты, которые заменяют реальные во время тестирования. Faking и Mocking применяются для создания фейковых классов и объектов, а также для имитации методов фейковых объектов и контроля возвращаемых ими значений.
Подробнее читайте в статье переводе на Habr.
А в следующих частях рассмотрим часто встречаемые ошибки и лучшие практики в написании Unit-тестов . Так что не переключайтесь!
Пишите в чате, используете ли вы в своей практике технику Faking?⚙️
Тестовые двойники — объекты, которые заменяют реальные во время тестирования. Faking и Mocking применяются для создания фейковых классов и объектов, а также для имитации методов фейковых объектов и контроля возвращаемых ими значений.
Подробнее читайте в статье переводе на Habr.
А в следующих частях рассмотрим
Пишите в чате, используете ли вы в своей практике технику Faking?
Please open Telegram to view this post
VIEW IN TELEGRAM
Flutter 3.24
Hola, Amigos! Срочное включение! Вышла новая версия Flutter 3.24. В режиме турбо перевели статью для вас и делимся по ссылке⚙️
В этом релизе представлена предварительная версия Flutter GPU, которая позволяет использовать продвинутую графику и 3D-сцены прямо из Flutter.
Web-приложения теперь могут встраивать несколько Flutter View, что улучшает их гибкость.
А ещё добавлена монетизация с видео рекламой, чтобы получать максимальную выгоду.
⚙️ Читать здесь
⚙️ Ставить лайки тут и там
⚙️ Обсуждать сюда
Всем хорошего кода!🙂
Hola, Amigos! Срочное включение! Вышла новая версия Flutter 3.24. В режиме турбо перевели статью для вас и делимся по ссылке
В этом релизе представлена предварительная версия Flutter GPU, которая позволяет использовать продвинутую графику и 3D-сцены прямо из Flutter.
Web-приложения теперь могут встраивать несколько Flutter View, что улучшает их гибкость.
А ещё добавлена монетизация с видео рекламой, чтобы получать максимальную выгоду.
Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
Отображение HTML-тегов в Flutter
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Сегодня поговорим про отображение HTML-тегов как виджетов в наших приложениях на Flutter.
Чаще всего для этого используется библиотека flutter_html:
Но у нее есть несколько минусов:
🔴 Она больше года не обновлялась, что с одной стороны хорошо, так как она стабильна, а с другой — она уже устаревает.
🔴 В ней есть баги. Например, если внутри тега <p> окажется список (<ul>, <ol>), то снизу появляется отступ, равный высоте списка.
🔴 Не очень понятная система стилизации. Чтобы что-то изменить, нужно разобраться, как это делается, так как вместо CSS-атрибутов используются собственные подходы.
Пример стилизации, где нужно поменять размер шрифта для всего документа:
Столкнувшись с этими минусами, мы решили перейти на вторую по популярности библиотеку — flutter_widget_from_html_core. Во-первых, она лишена вышеописанных багов. Во-вторых, она модульная, и к ней можно многое прикрутить.
Со стилями всё интереснее. Шрифт устанавливается через стандартный TextStyle:
Но если нужно его раскрасить или что-то ещё, всё становится сложнее, так как для каждого элемента нужно указать стили в виде CSS.
Если вам нужно больше возможностей, например, работа с видео, аудио, SVG картинками, кеширование изображений, вы можете воспользоваться расширенной версией этой библиотеки — flutter_widget_from_html, или добавить необходимые дополнения самостоятельно.
А чем вы пользуетесь на своих проектах для отображения HTML как виджетов?⚙️
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Сегодня поговорим про отображение HTML-тегов как виджетов в наших приложениях на Flutter.
Чаще всего для этого используется библиотека flutter_html:
Html(data: ‘<p>Hello World</p>’);
Но у нее есть несколько минусов:
Пример стилизации, где нужно поменять размер шрифта для всего документа:
data: ...,
style: {
‘*’: Style(
fontSize: FontSize(15),
),
}
);
Столкнувшись с этими минусами, мы решили перейти на вторую по популярности библиотеку — flutter_widget_from_html_core. Во-первых, она лишена вышеописанных багов. Во-вторых, она модульная, и к ней можно многое прикрутить.
HtmlWidget(‘<p>Hello World</p>’);
Со стилями всё интереснее. Шрифт устанавливается через стандартный TextStyle:
...,
textStyle: TextStyle(...),
);
Но если нужно его раскрасить или что-то ещё, всё становится сложнее, так как для каждого элемента нужно указать стили в виде CSS.
HtmlWidget(
...,
customStylesBuilder: (element) {
if (element.localName == ‘p’) {
return {‘color’: ‘red’};
}
return {};
},
);
Если вам нужно больше возможностей, например, работа с видео, аудио, SVG картинками, кеширование изображений, вы можете воспользоваться расширенной версией этой библиотеки — flutter_widget_from_html, или добавить необходимые дополнения самостоятельно.
А чем вы пользуетесь на своих проектах для отображения HTML как виджетов?
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи команда мобильной разработки продуктового агентства Amiga. Сегодня мы для вас подготовили 7 и 8 части перевода гайда о тестировании Flutter приложений.
И в новом выпуске рассмотрим 6 ошибок при написании кода, которые усложняют автоматическое тестирование:
1️⃣ Не использовать Dependency Injection (DI)
2️⃣ Использовать верхнеуровневые функции и переменные внутри метода, который тестируется
3️⃣ Вызывать функцию плагина, которая использует нативный код, внутри тестируемой функции
4️⃣ Не отделять логику от UI
5️⃣ Использовать DateTime.now()
6️⃣ Написать большую функцию или поделить ее на много маленьких
Надеемся, что эта статья даст вам больше знаний и опыта, чтобы лучше проектировать код для упрощения написания тестов и покрытия большего количества сценариев.
В следующей статье поговорим проbest practices при написании тестов . Ставьте 🔥, если ждете!
И в новом выпуске рассмотрим 6 ошибок при написании кода, которые усложняют автоматическое тестирование:
Надеемся, что эта статья даст вам больше знаний и опыта, чтобы лучше проектировать код для упрощения написания тестов и покрытия большего количества сценариев.
В следующей статье поговорим про
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Вы ждали, а мы ждали еще больше, чтобы скорее поделиться с вами записью доклада Паши Гершевича, нашего Mobile Team Lead Amiga, с конференции Mobius.
Немного освежим в памяти тему доклада — «Создание indoor-карты здания на Flutter». Паша рассказал, как реализовать размещение на одном или нескольких экранах внутренней карты здания. Рассмотрели подходы и собственное решение с использованием Flutter.
Держите ссылки:
⚙️ YOUTUBE
⚙️ VK
Смотрите на любой удобной платформе и делитесь в чате, на какую тему вы бы точно пришли на конференцию?🙂
Немного освежим в памяти тему доклада — «Создание indoor-карты здания на Flutter». Паша рассказал, как реализовать размещение на одном или нескольких экранах внутренней карты здания. Рассмотрели подходы и собственное решение с использованием Flutter.
Держите ссылки:
Смотрите на любой удобной платформе и делитесь в чате, на какую тему вы бы точно пришли на конференцию?
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Поздравляю вас, коллеги, мы это сделали — это последняя серия нашего многосерийного сериала про тестирование Flutter приложений ⚙️
Напоследок разберем 9 лучших практик написания модульных тестов, которые помогут создавать более эффективные Unit-тесты. Оригинал оставлю тут, если вы вдруг знаете вьетнамский, а перевод на Habr 😄
Переходите по ссылке, читайте и пишите комментарии! Кажется, теперь мы с вами о тестировании Flutter-приложений знаем абсолютно всё.
Надеемся, этот материал принёс вам пользу и новые знания. Хорошего всем кода и легкого тестирования!⚙️
Напоследок разберем 9 лучших практик написания модульных тестов, которые помогут создавать более эффективные Unit-тесты. Оригинал оставлю тут, если вы вдруг знаете вьетнамский, а перевод на Habr 😄
Переходите по ссылке, читайте и пишите комментарии! Кажется, теперь мы с вами о тестировании Flutter-приложений знаем абсолютно всё.
Надеемся, этот материал принёс вам пользу и новые знания. Хорошего всем кода и легкого тестирования!
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня обсудим аудит кода и безопасности мобильных приложений.
Рассказали в карточках:
– зачем делать аудит кода?
– что он включает в себя?
– как использовать результаты аудита?
Если возникнут вопросы, велком в наш чат.
Будем рады вам помочь и обсудить задачи по развитию ваших проектов!
Связаться с Amiga
Рассказали в карточках:
– зачем делать аудит кода?
– что он включает в себя?
– как использовать результаты аудита?
Если возникнут вопросы, велком в наш чат.
Будем рады вам помочь и обсудить задачи по развитию ваших проектов!
Связаться с Amiga
Руководство по deep links в Flutter-приложениях
Hola, Amigos!
На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня обсудим deep links. Мы нашли интересные статьи у иностранного автора и делимся с вами переводами.
Что вы сможете сделать у себя в приложении после изучения гайда:
– Нажатие на ссылку похожую на
– Если вы используете кастомную схему, например
Переходите по ссылке и пишите комментарии, если было полезно, для нас это лучшая мотивация!
Hola, Amigos!
На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня обсудим deep links. Мы нашли интересные статьи у иностранного автора и делимся с вами переводами.
Что вы сможете сделать у себя в приложении после изучения гайда:
– Нажатие на ссылку похожую на
https://your-domain.com/details
будет открывать определенный экран в вашем приложении.– Если вы используете кастомную схему, например
myscheme123://details
, то этот гайд не для вас. Тут лучше рассмотреть пакет app_links.Переходите по ссылке и пишите комментарии, если было полезно, для нас это лучшая мотивация!
Hola, Amigos! На связи Flutter-команда агентства продуктовой разработки Amiga.
Недавно мы перевели для вас серию статей про модульное тестирование, но одна важная тема осталась за бортом. Сегодня познакомимся с тестированием BLoC при помощи модульных тестов.
В новой статье:
-возможности библиотеки bloc_test,
-примеры простых модульных тестов,
-примеры тестирования сложных событий.
Читайте по ссылке на Habr. Ставьте реакции, если было полезно!
А также делитесь в чате, с какими трудностями встречаетесь вы при тестировании приложений?
Недавно мы перевели для вас серию статей про модульное тестирование, но одна важная тема осталась за бортом. Сегодня познакомимся с тестированием BLoC при помощи модульных тестов.
В новой статье:
-возможности библиотеки bloc_test,
-примеры простых модульных тестов,
-примеры тестирования сложных событий.
Читайте по ссылке на Habr. Ставьте реакции, если было полезно!
А также делитесь в чате, с какими трудностями встречаетесь вы при тестировании приложений?