Flutter Tech-Lead Notes | Павел Гершевич
531 subscribers
147 photos
10 videos
88 links
Download Telegram
Ну чтож, вторая часть. Третья будет на этой неделе.
Forwarded from Flutter. Много
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
Только что завершил перевод 6 части "Полный гайд по тестированию на Flutter" (они будут постепенно выходить в ближайшее время).

Я думал, что это последняя часть, но это оказалось не так. На самом деле, это последняя часть на английском языке, а остальные 3 есть только на вьетнамском. Пожелайте мне удачи с этими переводами
😁5👍2😱2
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Вот и третья часть перевода подъехала⚙️

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

Читайте по ссылке на Habr. Пишите комментарии и ставьте реакции, если тема вам интересна!⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
А вот и второй сюрприз подъехал.

Я обещал после Mobius, что их будет 2. Первым была книга.

Теперь еще один - вчера я сходил на Flutter Dev Podcast, где мы поговорили про очень интересную тему. Но так как процесс монтажа занимает какое-то время, он выйдет не очень скоро, так что ждите)
🔥4
Итак. Поступают плохие новости. YouTube все-таки замедляют. У меня это началось где-то неделю назад, может чуть больше. Немного хронологии:
- Начали подтупливать видео раз в несколько минут. "Ну и пофиг"
- Грузит только 720p. "Ок, не страшно"
- Ростелеком заявили о серверах (что оказалось ложью) "Явно врут, не может 1-2 сервера из примерно 1000 влиять на всех в стране"
- Грузит только 480p. "Ну, вспомним 2010"
- Еле грузит 320p. и почти сразу выходит заявление о замедлении "Я же говорил, но что делать то?"

В итоге чисто для просмотра роликов перехожу на Google Chrome, так как там есть метод обхода, надеюсь постоянный. Это экспериментальный протокол QUIC. И это действительно работает.

Чтобы включить у себя в Chrome или любом другом браузере на базе Chromium (Edge, Яндекс.Браузер и т. д.) - перейдите на chrome://flags/#enable-quic и первым в списке будет он. Нужно, чтобы он был Enabled.
👍6
Экосистема Apple спасает в самом необычном случае.

Сейчас телега работает еле-еле, но мне нужно было отправить файл. 10 минут ожидания на 0% означают, что нужно искать обходные пути. И им для меня стал AirDrop, так как с телефона в телегу хоть медленно, но заливается.

А как у вас обстоят дела с доступом в телегу?
🤯3
На проекте, который сейчас делаю на работе встретился интересный баг.

У нас используется flutter_html, и если мы передадим ему список внутри абзаца (например <p><ul>...</ul></p>), то снизу появится отступ размером с сам список.

В итоге, оказалось, что это баг самой библиотеки, поэтому решение было достаточно быстрым - меняем. Поменял на flutter_widget_from_html. Она, как мне показалось, чуть более удобная даже.
👍1
Flutter Tech-Lead Notes | Павел Гершевич
На проекте, который сейчас делаю на работе встретился интересный баг. У нас используется flutter_html, и если мы передадим ему список внутри абзаца (например <p><ul>...</ul></p>), то снизу появится отступ размером с сам список. В итоге, оказалось, что это…
Все стало еще интереснее. Сборка приложения после смены библиотеки не дошла до Test Flight. В чем проблема? В том, что эта библиотека объединяет несколько и ей нужно разрешение микрофона. Поэтому нужно использовать flutter_widget_from_html_core
Forwarded from Flutter. Много
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
Flutter Tech-Lead Notes | Павел Гершевич
Итак. Поступают плохие новости. YouTube все-таки замедляют. У меня это началось где-то неделю назад, может чуть больше. Немного хронологии: - Начали подтупливать видео раз в несколько минут. "Ну и пофиг" - Грузит только 720p. "Ок, не страшно" - Ростелеком…
Вчера убили YouTube, вернее замедлили так, что невозможно стало пользоваться. Даже включенный QUIC не помогает. Значит, нужно искать способ работы с DPI на macOS (для Windows уже давно все используют GoodbyeDPI). В итоге я его нашел на просторах интернета:

Для этого нам потребуется терминал. Сначала установим программу нужную:

curl -fsSL https://raw.githubusercontent.com/xvzc/SpoofDPI/main/install.sh | bash -s darwin-amd64

Добавим ее в переменную PATH (нужно для запуска из консоли)

export PATH=$PATH:~/.spoof-dpi/bin

И запустим

spoof-dpi

Но не всегда срабатывает (у меня не сработало). Поэтому запускаем еще раз, но с настройками:

spoof-dpi --enable-doh --window-size 0

И вы получите на выходе работающий YouTube в любом браузере на macOS
👍41
Forwarded from Flutter. Много
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
👍1
Как проще всего поучаствовать в улучшении Flutter?

Самый простой способ - не самому что-то поправить, а найти баг. В одном из наших приложений такой нашелся, причем на старой версии. Разработчик буквально только что закончил оформление issue на этот баг - https://github.com/flutter/flutter/issues/153426
👎2🤔1
Пришло время первых анонсов осеннего сезона. Это будет интересно и увлекательно, так как я подготовил для вас серию докладов.

7 сентября мы встретимся на DevFest в третьем по населению городе Сибири - Омске (я недавно смотрел, мой родной Красноярск уже больше). Там я расскажу, зачем нам нужно логирование, какое оно бывает и что с этим всем делать.

Что? DevFest Omsk
Когда? 5-8 сентября 2024
Спикер: Павел Гершевич
Тема: Логирование на Flutter или какие метрики помогут в оптимизации
https://www.devfestomsk.ru/schedule
👍4🔥1
Обновление Flutter 3.24 принесло старый баг (его фиксили, но он вернулся), который я еще не встречал. Воспроизводится не на всех приложениях.

Что произошло:
При сборке релизного Android, если у зависимостей compileSdkVersion не 34 (Android 14), то может произойти ошибка при объединении ресурсов (на дебажной не воспроизводится). На одном из пет-проектов упало прямо на гуловской библиотеке (сначала упало на CI/CD, потом я смог воспроизвести).

* What went wrong:
Execution failed for task ':google_mlkit_commons:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
> Android resource linking failed
ERROR:/Users/user/build/**/intermediates/merged_res/release/values/values.xml:221: AAPT: error: resource android:attr/lStar not found.


Решаем так (скорее всего решение костыльное, но оно работает):

В файл android/build.gradle нужно добавить такой код:

subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
afterEvaluate { project ->
if (project.plugins.hasPlugin("com.android.application") ||
project.plugins.hasPlugin("com.android.library")) {
project.android {
compileSdkVersion 34
buildToolsVersion "34.0.0"
}
}
}
}
subprojects {
project.evaluationDependsOn(':app')
}

Вот и все) Приложение начнет собираться
👍2😁2
И еще один анонс на сентябрь.

В этот раз я буду выступать в своем любимом Санкт-Петербурге. Там мы поговорим про безопасность мобильных приложений, а именно про шифрование данных и доступ к ним только у пользователя.

Что? Стачка
Когда? 27-28 сентября
Спикер: Павел Гершевич
Тема: Это больше, чем биометрия. Или как сделать локальную аутентификацию в мобильном приложении.

https://spb24.nastachku.ru/
1
Вот и первая авторская статья на Хабр
Forwarded from Flutter. Много
Hola, Amigos! На связи Flutter-команда агентства продуктовой разработки Amiga.

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

В новой статье:
-возможности библиотеки bloc_test,
-примеры простых модульных тестов,
-примеры тестирования сложных событий.

Читайте по ссылке на Habr. Ставьте реакции, если было полезно!

А также делитесь в чате, с какими трудностями встречаетесь вы при тестировании приложений?
❤‍🔥1🔥1
Нашел для себя новый лайфхак по ускорению прохождения всех проверок в аэропорту - одежда без ремня. Вместе со складыванием всего в рюкзак работает отлично. От паспортного до зоны вылета - 3 минуты. Повторил свой рекорд. Просто передо мной были медленные люди. Так бы менее минуты вышло - закинуть ручную кладь на ленту, пройти, забрать с ленты.
❤‍🔥1