Gubin_dev – Telegram
Gubin_dev
129 subscribers
49 photos
7 videos
5 files
33 links
Авторский канал, где публикаются новости о технологиях. В основном конечно Flutter <3

Мой тг: @webmadness
Download Telegram
Я начал мейнтейнить библиотеку yandex_mapkit_community

Зачем?
Дело в том, что официальной поддержки яндекс карт для flutter нет. Однако, какой-то энтузиаст сделал частичную реализацию библиотеки (yandex_mapkit), которой мы могли бы пользоваться, если бы не одно но.
Проблема заключается в том, что автор этой библиотеки не поддерживал ее на протяжении 8 месяцев. Библиотека довольно сырая и имеет много детских болячек.
У меня появился проект, в котором заказчику очень хочется, чтобы мы использовали яндекс карты, однако в процессе реализации все проблемы этой библиотеки раскрылись во всей красе. Я сделал свой форк этой библиотеки.

Как просто репозиторий превратился в библиотеку на pub.dev?
Сидел я значит как-то в чатике флаттеристов и речь зашла за гугл и яндекс карты. Челу начали советовать забить на гугл карты (у него что-то не получалось с ними) и взять яндекс карты. В этот момент мне хотелось высказать всю боль, что я испытал и какой путь проделал, чтобы встроить эти карты к себе в приложение и мне подали идею опубликовать свои доработки на pub.dev.

Про поддержку комьюнити
Коллеги воодушевились идеей, в чате даже были люди, у которых были свои изменения в этой библиотеке. Админ канала флаттеристов в нескольких issue написал в репозитории yandex_mapkit, что библиотека уже не поддерживается и указал ссылку на мою.

Какие планы на библиотеку?
Я люблю флаттер и хочу, чтобы комьюнити продолжало свое развитие. Есть идея-фикс, что можно было бы реализовывать библиотеки используя ffi и не делать пробросы через method channel'ы. Было бы круто для начала сделать просто пробросы в основную библиотеку, а после пытаться частично интегрировать в библиотеку вызовы c++ кода вместо вызовов к платформе. Ну а сейчас, хотелось бы видеть цельную, продуманную библиотеку, за которую не было бы стыдно.

А теперь прЕкол
Спусть 15 часов после публикации моей библиотеки вдруг проснулся автор старой (yandex_mapkit) и судорожно начал публиковать изменения и сливать pull request'ы. Он сделал обновление основной публикации, поправил линтер.
Несмотря на то, что автор очнулся, я считаю, что забросил пакет один раз, он забросит его снова. Поэтому тут скорее игра в долгую.

Ссылка на мою библиотеку: https://pub.dev/packages/yandex_mapkit_community

Спасибо, всех люблю ❤️
🔥2🤯2
В чатике флаттеристов прислали интересную статью про setState. Если вы задавались вопросом, зачем нужен callback внутри этой функции, то вам сюда)

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

https://habr.com/ru/articles/745726/
🔥2🤯1
telegram-cloud-document-2-5415957067380830738.jpg
105.6 KB
Сейчас читаю DDD, там упоминается паттерн “спецификация”, переписал пример из книги. Подразумевается, что у химикатов (бочек с ними) есть требование к перевозке (specification). И оно регламентируется с помощью отдельного класса, с которым потом взаимодействует контейнер при проверке безопасности упаковки химикатов.

Что думаете?
👍 - интересный паттерн, стоит попробовать применить
👎 - нижнеспособная хрень
🤡 - я бы еще примеры посмотрел
👍2
"... моя лень проявляется в том, что я не запоминаю деталей кода, который пишу. Более того, опасаясь перегрузить свою голову, я умышленно не запоминаю многие детали. И поэтому я стараюсь записывать в коде всё, что иначе мне пришлось бы держать в моей бедной голове. Это позволяет мне не беспокоиться о воздействии пары бокалов пива после работы на клетки моего головного мозга" — Мартин Фаулер

😁
😁1🤯1
Что выведет этот код?
🤔2
Flutter схлестнулся с Нативом в чемпионате DigitalSkills в Казани

8 участников
7 - натив андроид,
1 - Флюттер

Итог такой:
1. Андроид
2. Флюттер
3. Андроид

8. Андроид

Это показывает, что флаттер может конкурировать с нативными средствами разработки в скорости и качестве (кода).

Хоть это и совсем нерепрезентативно
👍5🍾1
Что будет выведено на экран?
Anonymous Quiz
53%
3
12%
3, 6
29%
3, 3
6%
6
Утренняя разминка!
Почему НЕ надо использовать Bang operator
А вот и лайтовая разминочка для утречка пятницы подъехала
Что будет выведено на экран?
Anonymous Quiz
58%
0, 2
27%
0, 1
9%
1, 2
6%
не запустится
Реализация паттерна “Спецификация” на dart

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

Читается это необычно, будто бы читаю СпЕцИфИкАцИю к тому, кому выдавать кредит

Исходный код
Постпятничная задачка на утро)
Что будет выведено на экран?
Anonymous Quiz
39%
1
61%
1, 2
Early return pattern упростит вашу жизнь

Суть паттерна в том, чтобы досрочно завершать функцию, вместо того, чтобы писать else.

В примере приведен реальный код из dart’а

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

Мысль у меня такая: если у вас появилась необходимость вложить if в if или дописать else в вашей функции, значит вы что-то делаете не так. Вернитесь на шаг назад и переосмыслите, может быть надо вынести метод? Или дело в концепции?
👍2
Затестил новый импеллер в Flutter 3.16, разочаровало.
This media is not supported in your browser
VIEW IN TELEGRAM
Разберем подробнее вчерашний пример с импеллером. Дело в том, что этот пример был создан для демонстрации загрузки UI и Raster потоков. В потоке UI сложная операция, которая рисует множество окружностей на экране + рисует SweepGradient (для отрисовки крутящегося радара). Ну и где-то через полторы минуты приложение крашнулось.

Радар при этом обернут в RepaintBoundary, чтобы выделить новый слой отрисовки и не затрагивать слой со сложной отрисовкой.

На конференции GDG Devfest Astrakhan 2023 расскажу подробнее. Постараюсь побыстрее для вас выложить запись доклада, ну а после доклада выложу видосы с примерами и пришлю ссылку на код.

P.S. да, я запускал с флагами --enable-impeller --profile, и да, это версия 3.16, телефон Google Pixel 7
🔥3
Если кратко, там где-то утечка памяти происходит
🤔1😨1