Дневник Flutter разработчика
211 subscribers
32 photos
1 video
2 files
19 links
Собираю полезности и излагаю мысли обо всей этой движухе.

GitHub: https://github.com/GereyTatarkhanov
Download Telegram
Меня давно не было, но сейчас я врываюсь с новостями❗️👇

Дизайн нашего мобильного приложения ВсяЕда для клиентов уже готов🎊🍕🍣

И на мой взгляд получился очень красивым! А отдельный primary color для каждой категории (кулинария/кондитерские изделия/кофейни) и карта с отмеченными на ней заведениями, которые будут в приложении должны сделать приложение еще круче 😎

Конечно, я видел дизайн и раньше, но мне не хотелось делиться с вами его изображениями, пока он полностью не был готов, хотя очень хотелось😊

Если вдруг увидите, что где-то что-то не то, не стесняйтесь написать об этом, буду рад вас послать критике, ведь с ней проект может стать еще лучше⚡️

Еще на листочке записаны несколько крутых идей, которые не войдут в MVP, но обязательно будут реализованы в будущем!

Буду и дальше делиться с вами новостями. ТЗ для партнерского приложения еще не готово, но для партнеров ожидается очень гибкая и настраиваемая бомба!💥
👍6🔥3😁1
Давно отечественные боты с низкой социальной ответственностью начали заглядывать в зарубежные Flutter паблики?😁 Их и в наших-то не мало
😁3🤣1
На днях словил очень мерзкий баг связанный с пушами🚫
Мерзкий тем, что пуши не отображались на Android.

Сначала выяснял почему у меня на Android эмуляторе все работает как часы, а у моих коллег-тестеров, которым я скидываю APK все работает не как часы, вернее вообще не работает.

Мысль о том, что для других я собираю release apk, а для себя debug пришла не сразу, я думаю вы уже догадались, что причина была в этом (Ну половина причины🤷).
На stackoverflow нашел решение: якобы надо sha-1 ключ, которым подписываю релизный APK загрузить в firebase. Но хрен там... Не помогло. Не знаю почему все про это говорили - и без этого ключа все пуши ходили, просто не отображались в release (это я выяснил позже по логам в graylog).

Найти проблему помог скайнет из алиэкспресс под названием deepseek 🈵
Оказалось, что во время сборки release версий стирались (и/или обфусцировались) важные данные связанные с пушами. А занимался этим "шовинизмом" по отношению к пушам ProGuard. Да. Вот так.

Проблему можно решить отключив беспредельщика в файле android/app/build.gradle вот так:
    buildTypes {
        release {
            shrinkResources false
            signingConfig signingConfigs.release
        }
    }

Или написать правила, чтоб он обходил пуши.
Кстати, в документации к flutter_local_notifications есть часть этому посвященная.

Может кому пригодится🙃
👍7
А это варианты иконок для нашего проекта.
Интересно узнать ваше мнение о них, какой вариант лучше
1🔥1
Какой выриант лучше?
Anonymous Poll
47%
icon 1
9%
icon 2
22%
icon 3
22%
icon 4
Хочу поделиться довольно полезными правилами📝

Недавно начал читать "Чистый код" Роберта Мартина (да-да заезженная тема и все, кому не лень ее читали, я знаю, заткнись). И в самом начале говорится о правилах 5S - это японские правила соблюдения порядка, которые применимы и в кодинге. Давайте продублирую, лишним не будет:

1) Seiri (Сортировка) 🗂
Сортируем нужное и ненужное: ветки в git'е, зависимости и код, который "когда-нибудь пригодится" (он не пригодится, поверьте). Оставляем все, что нужно для конкретного проекта или конкретной задачи. Не надо складывать все приколюхи в utils.

2) Seiton (Соблюдение порядка) 📂
Чёткая структура: ui компоненты — в widgets/, dto — в models/, газировку — в кружку (а не на клавиатуру, как я. Сейчас придется новую покупать).

3) Seiso (Содержание в чистоте) 🧼
Удаляем мусор: print'ы для дебага с текстом "тут ашыбка", закомментированные куски и прочее.

4) Seiketsu (Стандартизация) 📜
Один кодстайл на всех. Форматируем, используем запятые по договоренности, схожий нейминг для схожих элементов и т.д.

5) Shitsuke (Совершенствование) 🚀
Автоматизируем рутину, рефакторим код и учимся на ошибках (желательно на чужих).
👍8
Уже слышали про Model Context Protocol (MCP)?
Если коротко и простыми словами - это стандартизированный способ обмена информацией с ИИ (и вроде как между ИИ) 🛠

И так, твой первый вопрос - "Зачем это нужно?". Представь себе, что тебе нужно быстро переключаться между ИИ в рамках одной системы и одного инструмента или подключать ИИ модель к внешним ресурам. Без стандартного подхода придется делать интеграцию с каждой моделью по отдельности с нуля, а MCP предлагает быстрый способ создания подобных "мостов" 🌉 между клиентом и искусственной думалкой.

🎬 Резкая смена кадра, тусклый флешбек и переносимся к редактору кода - Cursor 💻
Для тех, кто пропустил - это редактор кода с встроенными ai функциями. У тебя возникает второй вопрос "И что тут такого?" 🤨
Ну да, он умеет "интегрироваться" в проект (изучать и делать правки в файлах, а не в тупую кидать код в чат, чтобы ты его скопировал). Вон Copilot так умеет тоже.
Ответ: еще одной фишкой редактора является быстрое создание так называемых MCP серверов 🚀

Твой следующий вопрос "Что это за очередная хрень?" 🤷‍♂️
Я объясню примером из своих недавних действий. Я связал с помощью такого сервера Cursor с Figma и "попросил" сверстать экран, который там нарисован. Получилось, кстати, плохо. Ужасный код и верстка похожа на дизайн из макета не сильно (хотя он даже svg скачал и вставлял в код).
А потом я сделал наоборот 🔄
Я сказал чат-боту нарисовать новый скрин в Figma и при этом использовать уже готовые компоненты из других нарисованных дизайнером экранов. Получилось еще хуже 😅 ИИ создал новый скрин, но тупо не попал элементами на созданный фрейм.

В целом опыт считаю удачным
Полагаю, что код и дизайн получились ужасными (а могли быть просто средними) потому, что у меня использовалась бесплатная версия Cursor, где доступны только подобные модели со сбитым прицелом, которые скорее всего обучались на skillbox и подобных курсах.

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

Материалы:
🔹 Figma to code - смотрел здесь. У него, кстати, очень неплохо вышло.
🔹Text to Figma design - с помощью плагина Сursor Talk to Figma
👍3🔥3🤝1
Что там по проекту "ВсяЕда" ?
- Дизайн основного приложения - готов
- Дизайн для партнерского приложения - в процессе (Отдал ТЗ дизайнеру, обговорено)☑️

Какая архитектура проекта планируется📝
1️⃣ Отдельный репозиторий (плагин) с общими свойствами для двух проектов (ВсяЕда, ВсяЕда Партнер), который будет включать в себя:
🔹 функции расширения;
🔹 код для http запросов (скорее всего будет обертка над dio с базовыми url и интерцепторами для подхвата jwt токена и т.п.);
🔹 код для обработки ошибок при сетевых запросах;
🔹 transitions (переходы);
🔹 и всякого рода сахар, который отупляет мозг облегчает разработку.

2️⃣ Отдельный плагин с дизайн-системой:
🔹кнопки;
🔹лоадеры;
🔹инпуты для ввода текста;
🔹шрифты;
🔹иконки;
🔹цвета;
🔹прочий ui;
Дизайн-систему уже начал пилить. Проделана работа с цветами, шрифтами и добавил иконки. Иконки зилил как шрифты (У меня есть пост, где я рассказал зачем это и как это)

3️⃣ Приложение ВсяЕда
4️⃣ Приложения ВсяЕда Партнер

Что планирую делать в самих приложениях:
основные зависимости:
🔹bloc для state management'а
🔹json_serializable для генерации DTO моделей;
🔹go_router для навигации;
🔹dio для http запросов;
Дальше перечислять не буду, но планирую на сколько это возможно избегать большого их количества. Особенно не хочется юзать freezed, injectable, retrofit и другие либы, где надо генерить код (кстати, поэтому и go_router, а не auto_route). Пока что единственным исключением является json_serializable, к нему я просто привык.

Ну и придерживаться Clean architecture на сколько это возможно, а также соблюдать принципы DRY и KISS и то, что лучше всего получается помню из SOLID. (Я прям как будто собес прошел😅).
Как-то так 💁‍♂️
👍2
Channel name was changed to «Дневник разработчика»
Как вам такое? Или это уже не редкость?
😁6
Channel name was changed to «Дневник Flutter разработчика»