Flutter. Много
2.76K subscribers
333 photos
23 videos
258 links
Заказать мобильную разработку: https://amiga.agency/?utm_source=tg
Заказать рекламу в канале @amiga_agency_bot

Новости Flutter-разработки, дайджесты мероприятий, личный опыт.
Download Telegram
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Продолжаем рассказывать, в чем разница между go_router и auto_route.

Количество багов и костылей

На личном опыте можем сказать, что с go_router костылей и правок, которых нужно исправлять вручную, всегда больше, чем с auto_route. Да, первые версии могли пропускать кадры при переходах, но со временем это исправили.

Вложенная навигация

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


Scaffold(

body: AutoRoute(),

);


Да, go_router поддерживает такое, но настройка будет в разы сложнее.

Route Guards

Настройка guards в go_router делается при настройке самого роутера, а перенаправление — при помощи функции redirect.

В auto_route мы можем создавать именно отдельные Route Guards и присваивать их путям в наших настройках.

Было полезно? Если у вас еще остались вопросы, то пишите в чат.
7👍5🔥4
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Приготовили для вас серию статей переводов о тестировании в Flutter.

Сегодня первый выпуск, в котором познакомимся с Unit-тестированием, Widget-тестированием, Golden-тестами и интеграционным тестированием (оригинал).

В статье приведено много примеров и часто встречаемых ошибок, с которыми сталкиваются специалисты, когда пишут тесты. Показано, как писать код, чтобы сделать тестирование проще, и как использовать AI-инструменты, такие как ChatGPT или GitHub Copilot для увеличения скорости написания тестов.

Переходите по ссылке. По ходу материала вам будут встречаться мои комментарии.

Приятного чтения! Будем рады вашей обратной связи в чате.
🔥82👏2👍1
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Продолжаем раскрывать тему тестирования в Flutter и сегодня поговорим о модульном (Unit) тестировании.

В данной статье описан простой Unit-тест и использование функций expect и Matcher. Скорее переходите на Habr, чтобы узнать подробности! ⬅️

Еще несколько выпусков будут посвящены Unit-тестам, разберем более сложные случаи с использованием продвинутых техник: Mock, Fake и Stub.

Ставьте реакцию, если ждете продолжения! 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6👏2👨‍💻1
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Вот и третья часть перевода подъехала⚙️

В предыдущих статьях мы научились писать модульные тесты для статичных функций, верхнеуровневых функций и расширений. На этот раз напишем Unit-тесты для методов класса.

Читайте по ссылке на Habr. Пишите комментарии и ставьте реакции, если тема вам интересна!⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍42
Hola, Amigos! На связи команда агентства продуктовой разработки Amiga. Делимся лучшими практиками работы с BLoC.

Немного терминологии для тех, кто только начинает погружаться в кроссплатформенную разработку.

Что такое BLoC?

BLoC (компонент бизнес-логики) — это класс, отделяющий бизнес-логику приложения от пользовательского интерфейса. Такой компонент содержит код, который можно повторно использовать в любом модуле, платформе или приложении.

Почему это важно?

Отделение UI от бизнес-логики для Flutter жизненно необходимо. Карабкаться вверх-вниз по дереву виджетов в поисках нужной логики — не самая приятная задача. Особенно, если верстка и так содержит много кода и разбросана по разным файлам.

Использование BLoC помогает:

⚙️ Упрощать тестирование кода.
⚙️ Повышать читаемость и поддерживаемость кода.
⚙️ Переиспользовать бизнес-логику между различными модулями и платформами.

Смотрите карточки, забирайте советы себе на заметку!

И пишите в комментариях, что хотелось бы ещё узнать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍126
Дайджест июля

Hola, Amigos! Собрали в одну подборку все полезные посты и статьи июля, которые вы могли пропустить или не знать о них, если вы присоединились к нам совсем недавно. Выбирайте интересную тему и переходите по ссылкам.

🟡 Обзор пакета audio_waveforms

🟡 Трилогия о библиотеке auto_route: 1 часть, 2 часть, 3 часть

🟡 Отличия go_router и auto_route 1 часть, 2 часть

🟡 Методы тестирования в Flutter

🟡 Модульное (Unit) тестирование

🟡 Unit тесты для методов класса

🟡 Лучшие практики работы с BLoC

🟡 И ещё кое-что… Приглашаем на крупнейшую конференцию BOOST для руководителей студий и агентств. Дарим скидку 10% на билет по промокоду AMIGA10!

Всем хорошего кода и последнего месяца лета! ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3👀2
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Делимся с вами 4 частью полного гайда по тестированию в Flutter, которая посвящена продвинутому модульному тестированию.

Мы уже рассмотрели:
⚙️ Unit-тестирование, Widget-тестирование, Golden-тесты и интеграционное тестирование

⚙️ Простые модульные (Unit) тесты

⚙️ Использование техник Mocking и Stubbing для тестирования классов

В новой статье еще больше усложнен класс LoginViewModel при помощи создания переменной _cache для кеширования результата, полученного от SharedPreferences. Продолжение читайте по ссылке.

Fun fact: думали, что гайд состоит из 6 статей, а оказалось, что есть еще 3, только уже не на английском, а на вьетнамском языке. Пожелайте нам удачи!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73😁2🔥1
Hola, Amigos! Мы с вами подобрались уже к 5 части гайда о тестировании в Flutter. И в ней разберемся, как использовать библиотеку Mocktail для техник mocking и stubbing в Unit-тестах.

Перевод по ссылке на Habr ⬅️

Все предыдущие части можно найти тут. А в следующей статье познакомимся с новой техникой — Faking.

Пишите в чате, узнали ли вы для себя что-то новое из гайда? Делитесь впечатлениями!⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43👏3
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Вот и 6 часть гайда по тестированию в Flutter готова. В ней идет речь о тестовых двойниках: Faking vs Mocking. Давайте разбираться, как используется техника Faking?🦋

Тестовые двойники — объекты, которые заменяют реальные во время тестирования. Faking и Mocking применяются для создания фейковых классов и объектов, а также для имитации методов фейковых объектов и контроля возвращаемых ими значений.

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

А в следующих частях рассмотрим часто встречаемые ошибки и лучшие практики в написании Unit-тестов. Так что не переключайтесь!

Пишите в чате, используете ли вы в своей практике технику Faking? ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👏2👍1
Flutter 3.24

Hola, Amigos! Срочное включение! Вышла новая версия Flutter 3.24. В режиме турбо перевели статью для вас и делимся по ссылке ⚙️

В этом релизе представлена предварительная версия Flutter GPU, которая позволяет использовать продвинутую графику и 3D-сцены прямо из Flutter.

Web-приложения теперь могут встраивать несколько Flutter View, что улучшает их гибкость.

А ещё добавлена монетизация с видео рекламой, чтобы получать максимальную выгоду.

⚙️ Читать здесь
⚙️ Ставить лайки тут и там
⚙️ Обсуждать сюда

Всем хорошего кода! 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥125👏3👍2🤓1
Отображение HTML-тегов в Flutter

Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Сегодня поговорим про отображение HTML-тегов как виджетов в наших приложениях на Flutter.

Чаще всего для этого используется библиотека flutter_html:

Html(data: ‘<p>Hello World</p>’);


Но у нее есть несколько минусов:

🔴 Она больше года не обновлялась, что с одной стороны хорошо, так как она стабильна, а с другой — она уже устаревает.
🔴 В ней есть баги. Например, если внутри тега <p> окажется список (<ul>, <ol>), то снизу появляется отступ, равный высоте списка.
🔴 Не очень понятная система стилизации. Чтобы что-то изменить, нужно разобраться, как это делается, так как вместо CSS-атрибутов используются собственные подходы.

Пример стилизации, где нужно поменять размер шрифта для всего документа:


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
👍15🔥53
Hola, Amigos! На связи команда мобильной разработки продуктового агентства Amiga. Сегодня мы для вас подготовили 7 и 8 части перевода гайда о тестировании Flutter приложений.

И в новом выпуске рассмотрим 6 ошибок при написании кода, которые усложняют автоматическое тестирование:

1️⃣ Не использовать Dependency Injection (DI)
2️⃣ Использовать верхнеуровневые функции и переменные внутри метода, который тестируется
3️⃣ Вызывать функцию плагина, которая использует нативный код, внутри тестируемой функции
4️⃣ Не отделять логику от UI
5️⃣ Использовать DateTime.now()
6️⃣ Написать большую функцию или поделить ее на много маленьких

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

В следующей статье поговорим про best practices при написании тестов. Ставьте 🔥, если ждете!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👏1🤨1