Flutter Tech-Lead Notes
318 subscribers
136 photos
9 videos
82 links
Download Telegram
Кстати, в эту среду в Красноярске прошел митап от Т-Банка. Тема была - секция программирования на собеседованиях.

Мы с моим коллегой Михаилом, который вместе со мной перешел из Аспирити в Amiga, посетили это мероприятие. Пообщались с людьми, позадавали вопросы спикерам (к слову, я с 2 из них уже был знаком, так как пересекались на конференциях и не только).

Было очень круто! Уровень с прошлого раза сильно поднялся, как по качеству докладов, так и по организации в целом.
👍4
Ну чтож, вторая часть. Третья будет на этой неделе.
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
Вот и первая авторская статья на Хабр