Говоря простым языком, кроссплатформа — это набор инструментов (фреймворк), который позволяет создать приложение, подходящее сразу для iOS и Android. На первый взгляд звучит замечательно. На деле свои возможности и ограничения есть у каждого фреймворка. Их немало: React Native, Xamarin, PhoneGap, Titanium, Ionic, Flutter — самые популярные.
Спасибо за статью. Flutter действительно классная штука, и я считаю его лучшим мультиплатформанным решением сейчас, но позвольте добавить немного дегтя. Возможно, я сгущаю краски, но все же. Стоит понимать, что, как и любая мультиплатформа, flutter реализует штуки, которые до этого были реализованы нативными командами гугла и эппла. То есть в лучшем случае у вас будет возможность поддерживать все, что есть нового в этих платформах, но с определенной задержкой по времени. Это в лучшем. А в худшем часть функционала вообще не будет реализована или отдастся на откуп написателям плагинов.
Продолжая предыдущий пункт. Совместимость с нативнми функциями реализуется с помощью плагинов. И эти плагины часто делаются обычными людьми, а не самой командой разработки флатера и могут косячить. И чем нетривиальнее ваша задача, тем больше вероятность, что вы упретесь в их некорректную работу. Например, я копался с флаттером в январе-феврале того года. И мне надо было реализовать логин во внутреннем браузере приложения. На тот момент существовало 2 плагина длля работы с встроенным браузером. 1 был откровенно плох (не помню то чно чем, но там был очень ограниченный набор функций). А во втором, который использовался массово, не работала клавиатура. То есть она не появлялась вообще, когда ты пытался заполнить текст в формах. Насколько я знаю, этот баг актуален до сих пор (спустя больше чем год). То есть чем больше нетривиальных действий использует ваше приложение, тем больше вероятность встрять. А если ваше приложение не имеет серьезной логики, а нужно только для размазывания json по формам, то да, флаттер отличное решение. Только мобильная версия сайта в таком случае справится не хуже.
Так же не забывайте, что флаттер разрабатывается командой гугла,а не эпла. Поэтому основной упор делается на элемента материал дезайна. Насколько я знаю, там есть и ios ui элементы, но их не так много. И ui вам скорее всего придется также разделять на 2 части, так как ваше приложение та же модерация эпла может завернуть из-за несоответствия гайдлайнам. То есть вы опять придете к 2 версиям ui и 2 версиям бизнеслогики.
И ваш общий код будет просто нашпинован условиями if(IOS){} if(Android){}
Это то, с чем я столкнулся год назад. Возможно, сейчас это все решаемо
Вы очень хорошо дополнили статью своими комментариями. Но на мой личный взгляд они немножко оторваны от реалий продашкн-проектов (во всяком случае теми, с которыми работаем мы).
Пройдусь по некоторым пунктам:
1) "А в худшем часть функционала вообще не будет реализована или отдастся на откуп написателям плагинов." - хороший Flutter-разработчик должен быть таким писателем плагинов потенциально для каждой из поддерживаемых платформ, это факт. Да, есть кейсы, который вы сами не решите, например, вы вряд ли напишете WebView. С каждым днём таких проблем всё меньше, а экосистема развивается.
2) "Только мобильная версия сайта в таком случае справится не хуже." - ну это не так, приложение остаётся приложением и даёт другой уровень UX и вовлечения. На чём бы ни было оно написано.
3) "То есть вы опять придете к 2 версиям ui и 2 версиям бизнеслогики." - а откуда берётся 2 версия бизнес-логики? Что касается дизайна, наши проекты (как и подавляющее большинство приложений из топов сторов) чаще всего имеют уникальный кастомный дизайн с оглядкой на бренд-гайды кастомера. И там да, есть место для платформенных адаптаций, но речь не идёт о двух принципиально различных дизайнах с нуля под две платформы никогда. Проблем с ревью в Apple никогда не было по этому критерию.
4) "ваш общий код будет просто нашпинован условиями if(IOS){} if(Android){}" - полез специально проверять, на 90к строк кода нашего проекта 20 таких условных проверок. Кажется не страшно.
да, до боли знакомые комментарии, применимые к любому такому фреймворку. с флаттером не работал, но фонгэп, сенча тач и тд было.
жаль что там тоже самое.
немного надежды вселяет то что вы его пробовали год назад, а это фактически означает "сразу после релиза конца 2018 года" то есть одна из первых стабильных версий. То есть возможно и правда что-то улучшилось.
а то что не пройдет в эппл по гайдлайнам это интересно, про такое я еще не слышал о флаттере
Например, я копался с флаттером в январе-феврале того года. И мне надо было реализовать логин во внутреннем браузере приложения. На тот момент существовало 2 плагина длля работы с встроенным браузером.
Вести с полей — проблемы с внутренним браузером никуда не делись. У нас точно такая же задача (логин в сторонней системе через браузер) и ожидаем решения траблы с клавиатурой с октября 2019. Но справедливости ради, баг этот случается у примерно 2-5% аудитории.
Хорошая статья, по делу. Мы в Mad Brains тоже активно развиваем направление Flutter, пока опыт очень позитивный. Главная сложность — это специалисты. Приходится переучивать или учить с нуля. Для бизнеса это не особо критично, он получает результат, а вот для студий, желающих вступить на эту дорожку, может быть сложно.
Также в статье не хватает, как мне кажется, сравнения более развернутого с другими кросплатформенными решениями, например, с Kotlin Mutltiplatform. Уверен, подобный анализ будет полезным. Можем подготовить статью от нашей команды, если сообществу интересно
Подготовьте пожалуйста статью)
@Surf Как вы справляетесь с поиском специалистов?