LINUX.ORG.RU
ФорумTalks

Flutter

 , ,


3

3

На днях поковырялся с замечательным SDK для кроссплатформенной мобильной разработки – Flutter.

И мне даже понравилось! Раньше смотрел косо на всю кроссплатформу.

  • Реально очень низкий порог входа. Путь к первому приложению лёгок и приятен.
  • Всё работает быстро и красиво, UI по поведению максимально похож на нейтивный и только очень зоркий глаз заметит различия. Писать какой-то жирный UI на флаттере комфортнее, чем в нейтиве.
  • Сам по себе графический движок очень производительный, можно писать вещи на вроде таких.
  • Крутой тулинг, онлайн-применение изменений и прочие клёвые штуки, которые пришли из мира веб-разработки.
  • Никакого javascript и html5.

    Но минусы конечно тоже есть.

  • Если требуются тонкости какие-нибудь, то хорошо представлять как это работает под капотом на нейтивных рельсах.
  • После kotlin, на котором пишу большую часть времени, dart выглядит приветом из забытого прошлого. Какие-то фичи клёвые, но многих привычных вещей не хватает.
  • Локализация довольно запутанная, по сравнению с iOS/Android. Без локализации в современном мире никуда.
  • Очень много скобочек из-за стиля самого flutter. Как бы ты не разбивал код, их всё равно много.

    Одним словом, если есть желание попробовать мобильную разработку, но нейтив внушает ужас, то flutter – отличный вариант для начала.

    Что думает местный коллектив? Кто-нибудь пробовал?
★★★★★

Последнее исправление: mono (всего исправлений: 3)

Dart вообще какой-то неказичный, совершенно не понятно зачем он нужен. Flutter это асолютно искуссвеная причина для его использования, дурость какая-то. Даже и пробовать не хочется из-за этой лишней сущности.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Dart вообще какой-то неказичный, совершенно не понятно зачем он нужен

Там специализированый GC удалось впилить, сделаный специально для выдерживания 60 FPS и компиляцию в натив.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Да.

На последнем Flutter dev podcast был разработчик dartvm, который много интересного про внутреннюю кухню рассказал.

mono ★★★★★
() автор топика
Ответ на: комментарий от WitcherGeralt

Даже и пробовать не хочется из-за этой лишней сущности.

Советую всё же попробовать. Не так страшно, как кажется. К дарту привыкаешь за пару часов, и он уже не так раздражает.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

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

WitcherGeralt ★★
()

Сам по себе графический движок очень производительный

Ну не знаю, не знаю. Если сравнивать с React Native, то на прошлогодних флагманах всё быстро и на флутере и на реакте, как и на старье, типа YP2 или нексуса 5-го, точно так же одинаково подтупливает. Всё это визуально на примере Gallery.

vvn_black ★★★★★
()
Ответ на: комментарий от der_looser

Лендинги и раньше можно было пилить на всяких react native и прочих. Flutter приятен для чего-то посложнее.

В перспективе это сильно сэкономит создание всяких rest-клиентов для интернет-магазинов и прочих, где нет сложной и платформо-зависимой логики. Не нужно искать двух разработчиков, а можно одного купить.

mono ★★★★★
() автор топика
Ответ на: комментарий от vvn_black

Flutter точно в релизном варианте смотрел?

Попробуй запустить history of everything, это более каноничный пример, кмк.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

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

der_looser ★★
()
Ответ на: комментарий от der_looser

Ты очень сильно упрощаешь, дьявол, как известно, кроется в деталях.

Возможности флаттера значительно шире, чем всего того, что было как грязи.

Скорее нужно перечислять те исключения, которые на флаттере делать нельзя или не очень рационально.

mono ★★★★★
() автор топика
Ответ на: комментарий от der_looser

Книжки скукота, особенно на русском!

Лучше выделить несколько часов и сделать какой-нибудь проект или разобрать существующий.

На медиуме, например, есть клёвая статья о том как написать аналог WhatsApp на flutter, в плане UI, конечно.

Это реально весело, особенно если знаешь через какие страдания нужно пройти, если всё это писать нейтивно и хорошо.

mono ★★★★★
() автор топика

Для вдоховивлихся. В телеграме есть русскоязычные чатики о flutter, где даже на глупые вопросы хорошо отвечают.

На сложные тоже хорошо отвечают)

mono ★★★★★
() автор топика

Что думает местный коллектив? Кто-нибудь пробовал?

Оно мертво по ряду фундаментальных технических причин, и никуда дальше конференций с хипстерами в жёлтых штанах и макбуками не уедет. Не трать своё время.

runtime ★★★★
()
Ответ на: комментарий от runtime

Будет здорово, если ты мысль раскроешь. Я не вижу каких-то критических проблем по которым можно назвать «оно мертво».

А ещё почти одновременно появились SwiftUI и Jetpack Compose, которые развивают идеи flutter, что намекает на то, что идея верная.

Все остальные проблемы, которые я вижу, можно постепенно решать.

mono ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Я тоже жду. Оно очень активно развивается, судя по коммитам.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

Будет здорово, если ты мысль раскроешь. Я не вижу каких-то критических проблем по которым можно назвать «оно мертво».

Я, конечно, могу потратить время и расписать, но ты уже поддался хайпу, и тебя пока всё равно не переубедишь.

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

  • Более-менее активно работать с функционалом девайсов (камера, GPS, итд.), т.к. без этого было нельзя ввиду природы самого назначения аппликухи
  • Подключать сторонние библиотеки, включая те, что забагованы, т.к. трахаться с ними всё равно быстрее, чем писать соответствующий функционал самому
  • Бороться с потреблением батареи
  • Бороться с потреблением памяти/CPU (читай, использовать нормальный профайлер)
  • Делать native look, включая ситуации, когда юзер может менять размер системных шрифтов, итп.
  • Поддерживать свою аппликуху на 9000+ девайсов, включая китайский хлам за $79.99, т.к. твой корпоративный клиент уже закупил этого дерьма для всех своих сотрудников
  • Делать полноценную локализацию, включая right-to-left языки
  • Дорабатывать и поддерживать аппликуху хотя бы 5+ лет, включая миграцию на все новые вышедшие за это время версии Android/iOS и их API
  • Пилить аппликуху командой хотя бы из 3 человек, некоторые из которых могут быть джуниорами
  • Передавать дальнейшую разработку и поддержку этой аппликухи другим разрабам, включая всё тех же джуниоров
  • Настройка автоматизированного build/deployment
  • Делать всё перечисленное в разумные сроки и за конкурентноспособные расценки, с учётом того, что все твои джуниоры тоже хотят купить себе жёлтые штаны, клетчатые рубахи и последний макбук

Теперь представь, что этот твой проект был написан на Flutter, и попробуй мысленно проследи его судьбу за все годы разработки. Да, я понимаю, что это сравнительно новый фреймворк, но его техническая основа и вообще подход гугла к его разработке уже должны дать тебе довольно чёткое представление, во что тебе обойдётся Flutter.

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

Also, не забывай, что при выборе технологии это не ЛОРовцы должны тебя переубеждать, что твоя технология говно. Ты должен попытаться сделать это сам, всеми доступными и недоступными тебе способами, при этом максимально сохраняя нейтральность и непредвзятость, просто потому, что в случае ошибки платить будешь ты, а не ЛОРовцы. И только если все твои попытки провалятся, то технология, может быть, действительно неплохая.

runtime ★★★★
()
Ответ на: комментарий от runtime

Спасибо большое за ответ. То что я поддался хайпу – не означает, что критика не нужна, наоборот.

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

Все моменты, которые ты выделил, совершено правомерны, но они остаются практически без изменений, независимо от SDK.

Грубо говоря, flutter – это фронтенд, который позволяет декларативно писать кроссплатформенный UI, который выглядит как нейтивный. Вся работа с платформой остается работой с платформой вообще без измненений, а вот UI-вопросы он позволит решать проще.

Более-менее активно работать с функционалом девайсов (камера, GPS, итд.), т.к. без этого было нельзя ввиду природы самого назначения аппликухи

Ничего не меняется, это нужно писать на java/kotlin, либо использовать готовые плагины, либо выносить всё в отдельные Activity. Если приложение целиком завязано на камеру и какие-нибудь сложные кастомные виджеты, типа карт, а UI мало, то flutter тут будет мало полезен.

Бороться с потреблением батареи
Бороться с потреблением памяти/CPU (читай, использовать нормальный профайлер)

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

Делать native look, включая ситуации, когда юзер может менять размер системных шрифтов, итп.

С этим всё замечательно, на первый взгляд, потому что native look выглядит достаточно native, шрифты и темы на лету меняются.

Поддерживать свою аппликуху на 9000+ девайсов, включая китайский хлам за $79.99, т.к. твой корпоративный клиент уже закупил этого дерьма для всех своих сотрудников

Тут, думаю, даже разработчики flutter не могут уверенно утверждать. Нужно ждать.

Делать полноценную локализацию, включая right-to-left языки

Вот тут я пока не понял как нужно делать правильно.

Дорабатывать и поддерживать аппликуху хотя бы 5+ лет, включая миграцию на все новые вышедшие за это время версии Android/iOS и их API

Flutter – это просто gl-канва, которая плюс-минус должна везде одинаково работать. С этим не так много изменений от версии к версии ОС. Ядро flutter, движок skia, – это часть chromium, поэтому довольно большая уверенность, что проблем с миграциями не будет.

Весь код, который касается платормы будет испытывать такие же трудности, как и сейчас.

Пилить аппликуху командой хотя бы из 3 человек, некоторые из которых могут быть джуниорами

Порог вхождения во flutter ниже. Научить джуниора писать качественный нейтивный код гораздо сложнее, особенно с тем как быстро меняются подходы «как нужно правильно делать».

Делать всё перечисленное в разумные сроки и за конкурентноспособные расценки, с учётом того, что все твои джуниоры тоже хотят купить себе жёлтые штаны, клетчатые рубахи и последний макбук

Всё зависит от задачи, компетенции команды и поставленных сроков.

Flutter – это явно ещё не тот продукт, который можно уверенно использовать в продашкне слепо, но какие-то несложные REST-клиенты, где много UI, но мало логики, я бы сейчас рискнул писать на Flutter, вместо нейтива.

mono ★★★★★
() автор топика

Не взлетит.

1) Гугл часто бросает проекты, даже годные

2) ...даже успешные

3) По опыту: любой фраемворк неюзабелен, пока не наберёт достаточно пользовательской базы - иначе типичные ошибки не гуглятся или вообще не решаются

4) Все стильные модные ui фраемворки страдают из-за недостатка гибкости

5) привыкать к очередному языку ради очередного фраемворка

next_time ★★★★★
()

Кто-нибудь пробовал?

Не я лично, но на Flutter пилится годный клиент для Matrix — Pattle. Изначально он был на Kotlin, но потом переписали.

commagray ★★★★★
()

Не нужно, когда есть haxe.

buddhist ★★★★★
()
Ответ на: комментарий от TooPar

Xamarin сейчас стоит смотреть только, если у тебя уже есть куча логики на C#, которую хочется использовать на мобилках.

UI всё равно придётся писать отдельно для каждой ОС.

Такая себе кроссплатформа.

mono ★★★★★
() автор топика
Ответ на: комментарий от commagray

Круто! Надо будет посмотреть как у них там всё устроено. Хороший пример, кстати, довольно сложного приложения.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

Шо-шо? А хамарин.формз - это так, побаловаться? Смотрю я на все эти говнореакты, везде чего нибудь недодали, mvvm запилить невозможно

TooPar
()
Ответ на: комментарий от TooPar

Xamarin.forms – это монстр для тех, кто знаком с WPF и не хочет переучиваться, flutter граздо более гибкий с гораздо более низким порогом входа.

Плюс, так как тулкит виджетов свой – нет проблем с производительностью бриджа между xamarin и native.

Смотрю я на все эти говнореакты, везде чего нибудь недодали, mvvm запилить невозможно

Во flutter вполне можно mvvm запилить, если очень хочется, но вопрос нужно ли? Впрочем, архитектурные паттерны – это вопрос вкуса и требований конкретного проекта.

mono ★★★★★
() автор топика

Я вот потихоньку тыкаю flutter, и вроде как бы и интересно, но все равно это какая-то странная кроссплатформа — platform widgets толком нету, и ты или везде юзаешь Material Design, или пишешь UI два раза.

DoctorSinus ★★★★★
()
Ответ на: комментарий от DoctorSinus

ты или везде юзаешь Material Design, или пишешь UI два раза.

ибо нефиг идти против генеральной лини партии!

der_looser ★★
()
Ответ на: комментарий от DoctorSinus

platform widgets толком нету

А чего конкретно не хватает в Cupertino Widgets. iOS-вариант не особо ковырял.

и ты или везде юзаешь Material Design, или пишешь UI два раза

Вопрос насколько у тебя отличается UX. Если дело только в стиле и поведении конкретных виджетов, то придётся их оборачивать в if (iOS) {...} else {...}.

Но вообще да, подход довольно неконсистентный. С одной стороны appbar, скролл и некоторые другие виджеты сами мимикрируют под платформу, а для других ты сам должен это делать.

mono ★★★★★
() автор топика
Ответ на: комментарий от Legioner

Любая кроссплатформа априори будет проигрывать нейтивным решениям, вопрос в цене.

Но не нужно забывать, что flutter – это только UI, причём UI довольно быстрый, даже на каком-нибудь 5S (как обещают, сам не проверял).

Тяжелую логику придётся писать как и раньше на kotlin/swift.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

Любая кроссплатформа априори будет проигрывать нейтивным решениям

Не согласен. Чаще всего это так, но это не аксиома. Но в случае мобильных приложений, имхо, непредсказуемый GC априори хуже предсказуемого счётчика ссылок, т.к. может включиться и испортить кадр в любой момент, создавая раздражающие пользователя ощущения тормозов. Может, конечно, они затюнили GC под какие-нибудь гарантированные суб-миллисекундные паузы...

Legioner ★★★★★
()
Ответ на: комментарий от mono

На iPad 3 тормозит жутко. И это при том, что я на нём в 3D игры играл вроде Asphalt с графикой практически как на консоли.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Значит с iOS у них пока не так всё хорошо, как с ведроидом.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

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

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.