Комментарии 13
Небольшое уточнение для тех кто не работает на macOS.
Доступ к macOS (SSH/VNC) был добавлен в основной функционал Codemagic. Теперь это доступно не только для пользователей Visual Studio Code, но и для всех остальных, и не надо заморачиваться с копированием исходников на удаленную машину.
Доступ к macOS (SSH/VNC) был добавлен в основной функционал Codemagic. Теперь это доступно не только для пользователей Visual Studio Code, но и для всех остальных, и не надо заморачиваться с копированием исходников на удаленную машину.
+3
Перешел с Xamarin на Flutter и ни могу не нарадоваться. Единственный раздражающий момент, система типов в Dart. Хочется нормальной строгой, явной типизации.
+1
Так она же есть.
Если хочется ещё строже, можно «затянуть гайки» на уровне статического анализатора:
dart.dev/guides/language/analysis-options#enabling-additional-type-checks
Если хочется ещё строже, можно «затянуть гайки» на уровне статического анализатора:
dart.dev/guides/language/analysis-options#enabling-additional-type-checks
0
НЛО прилетело и опубликовало эту надпись здесь
О, а расскажите пожалуйста, что сильнее всего радует при переходе с Xamarin на Flutter?
+2
Это довольно обширная тема, да и опыта с 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 моя продуктивность возросла.
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 моя продуктивность возросла.
+4
Читал заметку голосом Евгения из подкаста. Спасибо за подкаст
+2
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Flutter. Весеннее обновление 2020