← вернуться в ленту
ARTICLE20 июля 2020· Разное· Easy

Эксперимент с Flutter. Кроссплатформа наступает.

Ковид начинает затихать, еще чуть-чуть и будет прививка, ну а пока эксперементируем с кроссплатформой а именно Flutter

Так, ну что, товарищиши-коллеги!

Будучи все-таки ближе к бэку не перестаю интересоваться мобильной разработкой.


И выпало время поэксперементировать с кроссплатформой наконец, а именно с Flutter - никогда до этого его не копал подробно. До этого был опыт:

1) Xamarin. Работал в команде в роли лида. Задача была упростить разработку простых приложений. И сам эксперементировал. Доводил до прода.

2) ReactNative. С примесью expo. Это вообще отдельная ничего толком стабильно не получилось, то ли руки кривые, то ли не могу объять весь замысел постоянно меняющихся библиотек. И я так не понял фокус, нормальный подход работы с меню отсутствует или я просто не нашел.


Так вот. Вернемся к Flutter.

Имеем.

Бэк: asp net core 3.1

Flutter: 1.17 - в деталях пока не разобрался, но по-моему в dart там нет null safe подхода.


Идея приложения простая:

  1. 1е окно аутентификация. получаем с бэка jwt краткосрочный, refresh с помощью которого обновляем jwt.
  2. Галлеря фотографий, которе берется с сервера.
  3. Кнопка сфотографировать, ввести описание фотографии и отправить на сервер.


И за 5 часов - я справился.


Опустим странный синтаксис верстки флатер приложения, от которого у меня до сих пор некоторый шок.

Демка готова, но есть нюанс. Камера: она снимает просто отвратительно.

Библиотека так и называется camera (использовал camera 0.5.8)

особенно на андроиде. Оно все просто какое-то мега сырое. Время от времени падает - но тут склонен, что перемудрил с синхронным и асинхронным кодов future.

Либо мне не хватает сокровенных знаний, либо действительно все сыро пока.

Я склонялся было к первому, но покопав стэковерфлоу и рэдит - понял, что даже профы флатеровские сталкиваются с такими же проблемами. Решают через портирования нативки.


Далее непонятно формы редактирования не очень отзывчивый интерфейс - подвисает на реальных устройствах.


А вот работат с состоянием понравилось - Provider - это интересно. Может он не все охватывает как redux реакта, и недостаточно гибок - но мне он вполне понравился. Есть еще какой-то bloc - более профессиональный и современный, но т.к. приложения PoC - то решил не усложнять



Вот у меня вопрос, если каждая проблема связанная с железом требует глубокой интеграции на нативке, либо кастомизации библиотеки - кроссплатформа вообще того стоит?


Сейчас же грядут со стороны нативке две важных вещи:

  1. Kotlin на android и compose. Прощай xml
  2. SwiftUI на ios вместо storyboard. Прощай эти неподъемные деревья интерфейсов судя по отзывам.

Не легче ли писать сразу на нативке? Пусть местами это будет медленней зато надежней. Ну вот xamarin - вроде как все хвалят, и действительно местами быстрее, опять же шарпы - и он решает бизнес задачи - действительно решает - но, как же все не просто с ним.



P.S.:

По библиотекам опубликую позже свой pubsec.yaml - надо навести в нем порядок для начала. Очень много экспериментов.