LINUX.ORG.RU

Flutter 2

 , , ,


1

1

Не так давно анонсировали новый мажорный релиз кроссплатформенного фреймворка Flutter.

Flutter – это UI-фреймворк для создания приложений на языке dart.

Изначально Flutter поддерживал только мобильные платформы (iOS/Android), но начиная с Flutter 2 появляется поддержка Web и Desktop (macOS, Windows, Linux) в стабильной ветке. Как указывают сами разработчики, поддержка Desktop всё ещё в статусе «early release».

В официальном твиттере Ubuntu вышел пост, в котором сказано, что Flutter – выбор для будущих приложений Ubuntu по умолчанию.

Другие важные изменения:

  • Поддержка Null Safety, включённая по умолчанию. Для совместимости со старым кодом, Null Safety можно отключить.

  • Dart FFI – поддержка прямой интеграции Dart и C библиотек

  • Реализация Google Ads на Flutter перешла в статус Beta

  • Улучшения виджетов для ввода текста на платформах Desktop и iOS, в том числе поведение выделение текста, приближенное к родному.

  • Значительное уменьшение использования памяти для Flutter внутри нативных приложений iOS/Android.

  • Flutter Fix. Инструмент для автоматического поиска и миграции старого кода, такого как использование deprecated API.

  • Новый тулинг Flutter DevTools для упрощения дебага и оптимизации Flutter-приложений.

Flutter Engage Russia

13 марта в 12:00 (MSK) состоится online-конференция, посвящённая Flutter 2 на русском языке.

  • «Flutter for Web. Из мобилки в веб» Александр Денисов (EPAM Systems, Flutter и Dart GDE)

  • «Переходим на Null Safety» Евгений Сатуров (Surf, основатель Flutter Dev Podcast)

  • «Монетизация Flutter приложений», Кирилл Адещенко (Tennesi.bet)

Подробности в Telegram-канале Flutter Russia.

Конференция пройдёт на youtube-канале GDG

>>> Официальный пост о Flutter 2 на medium

★★★★★

Проверено: a1batross ()

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

просто -g не добавлять, тогда мусора компилято не больше пары сотен кб насует, но лучше просто export CFLAGS=" -s -O3" а то что вы предлогаете во первых попортит обратную совместимость с тем где нужно, а во вторых смысла нет т.к. легко добавить флаг -s

DMITRY ()

Посмотрел я.

Интервью дартера который рассказывает как круто вместо if(...) использовать около двух десятков других операторов с ? лишь бы не использовать if(...). О божечки как же легко допустить ошибку и забыть сделать проверку!

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

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

Из тебя какой-то бред льется, что само по себе не удивительно, маня

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

В кой-то веки согласен с анонимусом.

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

> Стандарт, закрепляющий БАЗОВЫЕ КОМПОНЕНТЫ

HTML5/CSS, не?

Вообще даже рядом не стояло!
Всё, что описывает HTML - это убогий набор ЭЛЕМЕНТОВ ВВОДА для отсылаемых формочек. Да и те не реализуют и половины от нормального десктоп-виджета. Контролы - это не только про ввод (табы, таблицы, видеофрэйм и т.п.). Понятно, что при помощи HTML таки можно изобразить пару несовместимых убожеств, но это вообще не про «стандарты GUI» - это скорее «а смотрите, как я могу извратиться в HTML!». Напоминаю, HTML - это гипертекст и таким и должен оставаться. А приложения - это совсем перпендикулярное направление, где мощность контролов не может урезаться в угоду «стандарту гипертекста». Это не говоря о том, что контролы в HTML - это ПРЕДОПРЕДЕЛЁННЫЕ шмотки кода - кто и как будет их РАСШИРЯТЬ?? Делать новые? Вот-вот! Крикуны про HTML (сейчас не о вас) даже не понимают пропасть между программерским набором виджетов и html-ной формочкой для ввода.

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

Как ни странно, что MS, что Apple прекрасно документировали ВСЮ свою библиотеку контролов - с чего вы решили, что это невозможно? MSDN почитайте, что ли. :)

HTML - это вообще не про контролы. Это «урезанный набор элементов ввода» для отправки примитивных данных на веб-сервер. По убожеству это примерно как 3-кнопочная клава по ср. с VR-шлемом. С главным, непреодолимым недостатком: HTML-ные контролы нельзя улучшать! Ты не можешь «унаследовать комбобокс» и добавить к нему флажок или по-другому рендерить элементы. Или вообще сделать композитный контрол, ведущий себя как единое целое. А уж про использование для этого ушлёпошного JS вообще молчу.

UI дизайнеры потом сделают мокап с поподвывертом....

Не интересно ни разу. Ты можешь делать что-угодно в своём приложении, но СТАНДАРТ всё равно остаётся.

Главное - не нужно пытаться каждую платформу зажимать под «единый бинарь» и в нём пытаться делать свои выкрутасы. Хочешь делать под винду - смело берёшь Win32 API и делаешь КОРОТКИЙ, нативный код, естественно работающий в родной среде. Главное - чтобы стандартизованные элементы были все и с минимальным функционалом, остальные хотелки дописываются в стандарт как опциональные.

Проблема в том, что в отсутствии стандартов, ВСЕ «кросс-писаки» упираются в необходимость делать «один отрисовщик» и УРЕЗАТЬ функции контролов, приводя их к единому знаменателю. Или того хуже - делают врапперы над нативными контролами, что приводит к разному поведению. Короче, они борятся с операционками, пытаясь «универсализировать» этот зоопарк, в то время, как сам зоопарк тихо посмеивается в сторонке. Это ИХ надо пинать и улучшать, а не библиотеки! Тем более, что большинство контролов есть в каждой ОСи, необходимо лишь улучшить их до общего минимально полезного вида, учитывая практики использования.
А учитывая, что ныне модное «декларативное UI» выстрелило (WPF как пример), есть надежда вообще без изменений компилировать проги под каждую платформу! (что куда практичнее, чем один бинарь подо всё)

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

Если гугл бросит флаттер, но найдётся кто-нибудь, кто станет поддерживать.

Не станет. Если ДАЖЕ ГУГЛ это бросит, проэкту писец. Он и сейчас-то - мёртворождённое «ненужно» на языке «ненужно», а без «баблосной корпорации» тем более не упёрся.
Это не говоря про фундаментальный вопрос, «А зачем ТЕБЕ ЛИЧНО нужна многоплатформенность?». Начнёшь на него отвечать и ВНЕЗАПНО окажется, что и м-п тебе нахрен не сдалась.

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

Интервью дартера который рассказывает как круто вместо if(…) использовать около двух десятков других операторов с ? лишь бы не использовать if(…). О божечки как же легко допустить ошибку и забыть сделать проверку!

Ну так пытаются свой Dart в Котлин постепенно переделать, чтобы хипстерам больше нравиться. С подобным синтаксисом код превращается в какую-то нечитаемую лапшу.

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

Он и сейчас-то - мёртворождённое «ненужно» на языке «ненужно»

https://flutter.dev/showcase

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

Это не говоря про фундаментальный вопрос, «А зачем ТЕБЕ ЛИЧНО нужна многоплатформенность?».

Чтобы не писать одно и то же два и более раз.

Тут вопрос уже другой. А какие сценарии ещё не покрывает кроссплатформа?

Вот видеоредактор я бы не стал писать на кроссплатформе, но много ли таких примеров?

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

Ты отсталый, на HTML5 можно строить очень гибкий интерфейс, малой кровью, включая создания новых контроллов и их наследование.

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

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

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

Тут довольно просто.

  1. dartvm поддерживает hotreload, позволяя создавать весь этот крутой тулинг.

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

  3. команды dart, dartvm, flutter активно сотрудничают между собой. Dart сейчас разрабатывается, главным образом, для flutter, даже релиз цикл синхронизован. Это позволяет быстро вносить изменения и не зависеть от внешних вендоров.

  4. отсутствие legacy. Создавать язык с нуля под свои нужды гораздо больше свободы добавляет. Хоть каждый релиз можно вносить breaking changes. Какой бы ещё язык это позволил?

Альтернатив такой связке не так и много.

Это либо V8/javascript, но тут очевидные проблемы js, от которых dart и пытался уйти на заре разработки. Не вышло бы создать такой классный тулинг и уйти от динамической типизации. Dart сейчас статически типизирован, рациональная динамическая типизация осталась как наследство и редко используется.

Либо kotlin native. Тут тоже проблема с тулингом, никакого hotreload бы не вышло, либо писать компилятор kotlin2dartvm. Это не так просто и какой смысл, если уже есть dart? И если бы даже всё получилось, то flutter-команда не имела бы такого влияния в развитии языка, и пришлось бы постоянно догонять официальный компилятор, чтобы обеспечивать совместимость с kotlin2dartvm.

Сейчас dart не настолько плох, чтобы об этом нужно было сильно грустить. И хорошо, что это не javascript.

mono ★★★★★ ()
Ответ на: комментарий от mono
  1. hotreload это, внезапно, не свойство языка (если это свойство Dart то это просто лишний «наворот», без этого можно было бы запилить хотрелод) и можно запилить хотрелод хоть на C++.

  2. пруфы об эффективности есть? Почему этот сборщик ещё не перенесли в другие языки?

  3. это не причина а следствие

  4. знаю о 5 годных языках без легаси

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

hotreload это, внезапно, не свойство языка (если это свойство Dart то это просто лишний «наворот», без этого можно было бы запилить хотрелод) и можно запилить хотрелод хоть на C++.

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

пруфы об эффективности есть?

Ищи интервью от разработчиков дарта. Я не помню конкретно где именно я это читал или слушал, но подробно этот момент обсуждали.

Почему этот сборщик ещё не перенесли в другие языки?

В libart уже перенесли, когда делали Jetpack Compose, который идейно почти флаттер.

это не причина а следствие

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

знаю о 5 годных языках без легаси

Да, и каждый из них умеет компилироваться под android, ios, web, linux, mac, windows, имеет развитый тулинг, готов выполнять хотелки команды flutter?

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

В век LLVM любой язык умеет компилироваться под android, ios, web, linux, mac, windows

По остальным пунктам: гугл заливает баблом нишу чтобы занять её. Для индустрии это не есть хорошо.

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

llvm только одну задачу из перечисленных решает.

Гугл бесплатно для индустрии создал прекрасный инструмент для своих задач. Все счастливы.

Можно одной рукой создать приложение для iOS/Android и Web, а другой рукой пивас хлебать.

Кто в данной ситуации в проигрыше?

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

гугл заливает баблом нишу чтобы занять её

Гугл бесплатно для индустрии создал прекрасный инструмент для своих задач.

Лично мне всё очевидно

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

Опять ты хамишь, заднеприводный …

У тебе течёт крыша и ты бегаешь со своим голубым, пристаешь к людям, а заднеприводный я… Путин даже недавно про таких сказал: Кто как обзывается, тот так и называется. И объяснил психологический подтекст для таких как ты. Так что продолжай наблюдение и лечение.

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

ты бегаешь со своим голубым

Нет у меня никакого голубого с которым я бегаю, сколько можно говорить …

Владимир 123

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

Чуть медленнее это на флагманах последних 3х лет, на среднебюджетных и бюджетных тормозит ощутимо, замучались с оптимизациями.

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

А что именно тормозит? Где просадки fps?

У меня не слишком сложные приложения, но всё более-менее хорошо даже на galaxy a5 2017 года.

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

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

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

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

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

Я графику не пишу, приложение обычный корпоративный crud, штатная анимация работает чуть хуже native и чуть лучше web.

balajahe ()

Как и всегда, подобные решения всегда будут хуже нативных. Лагать, выглядеть как говно, но всем лишь бы побыстрей да в продакшен, плевать на юзер экспериенс. Electron тому отличный пример! Пошёл в массы, тормозит, отжирает по 0.5-1гб рамы, зато наклепали на коленке за две недели! Всё имхо.

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

Флаттер и есть нейтив с этой точки зрения. Это opengl-контекст, где векторный движок skia (написанный на c++) рисует виджеты. DartVM в релизе не используется.

В общем случае разрыв между native и flutter минимальный. Можно поставить демки и потыкать. Есть демки со сложными анимациями для демонстрации движка.

Есть ряд проблем, конечно, но они постепенно решаются.

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

Скачай history of everything из аппстора/плейстора. Всё замечательно скроллится даже с кучей анимаций.

Если у тебя тормозит даже на флагманах – проблема в коде.

Я готов признать, что на старых телефонах, особенно с iOS, могут быть проблемы, но тут тоже постепенно ситуация решается. И телефоны уходят и flutter становится лучше.

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

А, ну сразу бы так и сказал.

Десктоп – да, тут много проблем ещё.

mono ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.