Flutter Vikings — день 1

В этом году мне выпала честь посетить Flutter Vikings, большую европейскую конференцию по Dart и Flutter.

Прежде чем я начну рассказывать о замечательных докладах, которые я видел в первый день, позвольте мне сказать, что команда Flutter за день до мероприятия представила новую версию Flutter: Flutter 3.3. Вот анонс, а вот журнал изменений. Эта новейшая версия направлена на стабилизацию Flutter 3 с множеством полезных исправлений и несколькими небольшими функциями. О, и как всегда, крупное обновление Flutter сопровождается обновлением Dart, и сегодня мы получили Dart 2.18, без каких-либо выдающихся новостей.

Теперь давайте перейдем к теме: Flutter Vikings Day 1!

Глубокое погружение в тематику Flutter

В этом первом докладе Майк Райдстрон представил различные концепции, связанные с темами.

Он начал с того, как правильно использовать ThemeData, поскольку существует около 8 различных способов объявления цветов… ThemeData(), ThemeData.from(), ColorScheme(), ColorScheme.fromSeed(),… Любопытно, что не все они работают одинаково, и некоторые из них могут пропустить несколько цветов, которые потом придется исправлять вручную.
Далее речь шла о текущем состоянии Material 3 и его сравнении с Material 2.

Во второй половине выступления Майк показал, как создавать красивые цветовые схемы и представил несколько разработанных им пакетов и методов, например flex_color_scheme, чтобы добавить больше гибкости к тому, как цветовые схемы в настоящее время работают в реализации Flutter Material 3.

В конце выступления была продемонстрирована Theme Playground, очень хорошее приложение для игры и генерации кода, связанного с темами!

Веселье с генерацией кода

Анна Леученко выступила с отличным докладом о том, как использовать генерацию кода с помощью пакета build_runner, чтобы писать меньше шаблонного кода. В докладе она использовала два приложения, чтобы сравнить, как генерация кода может упростить код приложения. Она рассмотрела довольно много пакетов, которые :

  • freezed для генерации моделей с конструкторами, равенствами, хэш-кодом, copyWith и другими замечательными возможностями, такими как сопоставление шаблонов
  • json_serializable для генерации методов toJson() и fromJson()
  • модификация для REST API
  • auto_route для навигации по Flutter
  • flutter_gen для связывания активов (делает изображения доступными через константы вместо указания пути)
  • injectable для использования эффективной инъекции зависимостей с get_it
  • i69n для локализации
  • bdd_widget_test для написания поведенческих тестов с использованием Gherkin.

Вам обязательно стоит ознакомиться с этим докладом и пакетами, если вы хотите узнать больше о генерации кода

Flutter At Scale — опыт 25+ разработчиков Flutter, работающих вместе над мобильным банковским приложением

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

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

В конце они представили свой storybook, очень красивый способ показать каждый компонент в различных состояниях (например, кнопка, которая может быть включена / выключена, наведена и т.д.).

Отзывчивый пользовательский интерфейс для потоков авторизации

В этом докладе Салих Гюлер из AWS Amplify представил концепции, которые вращаются вокруг адаптивных и отзывчивых макетов. Первая часть доклада была посвящена объяснению разницы между этими двумя терминами: адаптивный — это скорее адаптация макета, например, маленькое меню бургера становится левой панелью на больших устройствах, в то время как отзывчивый — это скорее адаптация всего к доступному пространству в зависимости от размера экрана.

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

  • LayoutBuilder
  • Media Query.of()
  • FractionnallySizedBox
  • OrientationBuilder
  • FittedBox
  • AspectRatio
  • CustomMultiChildLayout

И, конечно, более очевидные и известные, такие как Row, Column, Flexible, Expanded и так далее.

Понимание того, как Flutter работает с жестами

Гийом Диалло-Мюльез объяснил в простых деталях, как работает обнаружение и обработка жестов во Flutter, и как нам следует поступать, если мы хотим реализовать собственное обнаружение жестов или прослушивание жестов.

Этот доклад немного сложно переписать, потому что он был действительно техническим, но Гийом рассказал о GestureDetector, RawGestureDetectore, указателях и PointerEvent, слушателе жестов, тестах на попадание и так далее.

Если вам интересно, я могу только посоветовать вам посмотреть повтор, так как это будет намного ценнее, чем текстовая транскрипция!

Riverpod 2.0

Напоследок Реми Руселе — известный автор пакетов freezed, provider и riverpod — дал нам несколько намеков на то, как Riverpod 2.0 (одна из самых используемых библиотек управления состояниями) может выглядеть в, надеюсь, ближайшем будущем! Новый инспектор состояний в DevTools для Riverpod, пользовательский линтер, новый генератор документации с прекрасным графом зависимостей,… Много потрясающих возможностей!

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

Надеюсь, что скоро он будет доступен на pub.dev, потому что выглядел он великолепно 🔥.

В любом случае, это подводит итог этого потрясающего первого дня Flutter Vikings 2022, увидимся завтра во второй части!

Оцените статью
devanswers.ru
Добавить комментарий