Так, ну что, товарищиши-коллеги!
Будучи все-таки ближе к бэку не перестаю интересоваться мобильной разработкой.
И выпало время поэксперементировать с кроссплатформой наконец, а именно с Flutter - никогда до этого его не копал подробно. До этого был опыт:
1) Xamarin. Работал в команде в роли лида. Задача была упростить разработку простых приложений. И сам эксперементировал. Доводил до прода.
2) ReactNative. С примесью expo. Это вообще отдельная ничего толком стабильно не получилось, то ли руки кривые, то ли не могу объять весь замысел постоянно меняющихся библиотек. И я так не понял фокус, нормальный подход работы с меню отсутствует или я просто не нашел.
Так вот. Вернемся к Flutter.
Имеем.
Бэк: asp net core 3.1
Flutter: 1.17 - в деталях пока не разобрался, но по-моему в dart там нет null safe подхода.
Идея приложения простая:
- 1е окно аутентификация. получаем с бэка jwt краткосрочный, refresh с помощью которого обновляем jwt.
- Галлеря фотографий, которе берется с сервера.
- Кнопка сфотографировать, ввести описание фотографии и отправить на сервер.
И за 5 часов - я справился.
Опустим странный синтаксис верстки флатер приложения, от которого у меня до сих пор некоторый шок.
Демка готова, но есть нюанс. Камера: она снимает просто отвратительно.
Библиотека так и называется camera (использовал camera 0.5.8)
особенно на андроиде. Оно все просто какое-то мега сырое. Время от времени падает - но тут склонен, что перемудрил с синхронным и асинхронным кодов future.
Либо мне не хватает сокровенных знаний, либо действительно все сыро пока.
Я склонялся было к первому, но покопав стэковерфлоу и рэдит - понял, что даже профы флатеровские сталкиваются с такими же проблемами. Решают через портирования нативки.
Далее непонятно формы редактирования не очень отзывчивый интерфейс - подвисает на реальных устройствах.
А вот работат с состоянием понравилось - Provider - это интересно. Может он не все охватывает как redux реакта, и недостаточно гибок - но мне он вполне понравился. Есть еще какой-то bloc - более профессиональный и современный, но т.к. приложения PoC - то решил не усложнять
Вот у меня вопрос, если каждая проблема связанная с железом требует глубокой интеграции на нативке, либо кастомизации библиотеки - кроссплатформа вообще того стоит?
Сейчас же грядут со стороны нативке две важных вещи:
- Kotlin на android и compose. Прощай xml
- SwiftUI на ios вместо storyboard. Прощай эти неподъемные деревья интерфейсов судя по отзывам.
Не легче ли писать сразу на нативке? Пусть местами это будет медленней зато надежней. Ну вот xamarin - вроде как все хвалят, и действительно местами быстрее, опять же шарпы - и он решает бизнес задачи - действительно решает - но, как же все не просто с ним.
P.S.:
По библиотекам опубликую позже свой pubsec.yaml - надо навести в нем порядок для начала. Очень много экспериментов.