Как стать автором
Обновить

Комментарии 13

Небольшое уточнение для тех кто не работает на macOS.

Доступ к macOS (SSH/VNC) был добавлен в основной функционал Codemagic. Теперь это доступно не только для пользователей Visual Studio Code, но и для всех остальных, и не надо заморачиваться с копированием исходников на удаленную машину.
Спасибо за апдейт! Теперь я и читатели этого поста будем в курсе об этом.
Перешел с Xamarin на Flutter и ни могу не нарадоваться. Единственный раздражающий момент, система типов в Dart. Хочется нормальной строгой, явной типизации.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за исходники, можно с «errors» в yaml побаловаться благодаря Вам.
НЛО прилетело и опубликовало эту надпись здесь

О, а расскажите пожалуйста, что сильнее всего радует при переходе с Xamarin на Flutter?

Это довольно обширная тема, да и опыта с Flutter у меня пока не так много. Но если выделить главную для меня положительную черту, то это их подход к имплементации фреймворка. Там где можно работать со Skia, работают с ней. Где нет (веб), транслируют в веб элементы. При этом ты действительно работаешь нативно с UI потому как рендер UI концептуально от платформы к платформе не меняется. Ты оперируешь виджетами везде одинаково.

Eсли мы говорим про мобильную разработку, Flutter не скрывает от тебя нативные инструменты разработки. Приложение строится благодаря Xcode и gradle а не msbuild. По сути это и есть нативное приложение просто с одним activity/controller и canvas внутри. Xamarin имеет привычку все скрыть и завернуть в фантик от майкософт, что с одной стороны помогает абстрагироваться от платформ, но с другой причиняет боль если ты хочешь выйти чуть дальше этой песочницы.

Я в основном писал на Xamarin.Native/Classic и с Forms у меня был опыт печальный и очень давно, поэтому как сейчас в Forms дела обстоят я не знаю, но при переходе на Flutter я впервые ощутил, что UI для iOS и Android оказывается можно писать единый. Это наверное главный wow эффект. Это действительно pixel perfect решение и теперь я не знаю как можно вернуться к Xamarin после этого :)

HotReload/Restart вещь. Я знаю что в Forms вроде тоже реализовали это но имплементация точно будет хуже, просто потому что в конечном счете рендер UI в Xamarin ложится на каждую из платформ отдельно и такого функционала просто нет у них (не считая SwiftUI, но в Xamarin это пока не работает)

Everything is widget концепт действительно подкупает. Padding это тоже виджет, например. И это действительно так если ты смотришь на это с точки зрения рэндера дерева виджетов. Вообще все эти концепты widget/element tree, stateless и statefull виджетов, вся эта «реактивность» из коробки подкупают и не позволяют мыслить по другому после этого.

Есть и свои минусы/странности конечно. Например ты не можешь просто взять и узнать размер элемента перед построением всего дерева элементов. Фреймворк просто не работает так. Работа с зависимостями в пакетах (NuGet аналог) тоже далека от идеала. В Xamarin/.NET это реализовано стабильнее, чтоли. Dart и DartVM тоже далеки от идеала. С# как язык на порядок превосходит Dart, по моему мнению. Хотя некоторые концепты очень хорошо вписываются во Frontend разработку. Например в DartVM есть такой концепт как isolate. Каждый isolate это один main thread, побочные IO «трэды», которые дают тебе асинхронность и своя изолированная куча. Все. В этой песочнице ты и работаешь. Нужно что-то параллельно сделать, можно создать другой isolate и общаться с ним посредством сообщений но у меня такой необходимости пока не возникало да и на вряд ли возникнет.

PS: сейчас я разрабатываю одно приложение на Flutter с очень продвинутой анимацией и честно, я просто не был бы в состоянии сделать что-то подобное на Xamarin в каких-то приемлемых сроках. Нативно, скорее всего да если ты супер спец сразу на 2 платформы. На Xamarin.Forms, очень сомневаюсь, возможно если ты используешь SkiaSharp и то не факт. В общем, c Flutter моя продуктивность возросла.
Интересно написал. Это практически тема для новой статьи)
Я, собственно, и начал писать статью) Надеюсь на выходных закончу
Читал заметку голосом Евгения из подкаста. Спасибо за подкаст
Зарегистрируйтесь на Хабре , чтобы оставить комментарий