М — манёвренность

28 июля 2022
М — манёвренность

Это наш первый дайджест по фреймворку Flutter. Значимые новости, полезные туториалы, интересные статьи и события. Let’s make Flutter great again!

Штатная анимация диалогов

Flutter «из коробки» умеет анимировать диалоги. В целом, диалог можно рассматривать, как виджет, требующий реакции пользователя. Это может быть или ответ в самом диалоге, или его закрытие. 

Помните сказку про Кащея у которого смерть была спрятана внутри нескольких сущностей? Тут такой же принцип. У нас есть пустое Dart-приложение. Мы хотим, чтобы диалоговое окно анимировалось вращением при появлении и скрытии. Создадим элемент управления, например, кнопку и добавим функцию OnPressed, отвечающую за действия при нажатии. 

Теперь внутрь функции мы можем определить метод, управляющий диалогом. Пускай это будет _rotateDialog(). В этом методе добавляется функция показа диалога showGeneralDialog(). Далее зададим контекст и параметры, такие как pageBuilder, transitionBuilder и transitionDuration. Возвращая в transitionBuilder метод Transform.rotate(), можно указать угол поворота. Ну а с помощью transitionDuration задаётся время в миллисекундах, отводимое на выполнение анимации.

void _rotateDialog() {
 showGeneralDialog(
   context: context,
   pageBuilder: (ctx, a1, a2) {
     return Container();
   },
   transitionBuilder: (ctx, a1, a2, child) {
     return Transform.rotate(
       angle: math.radians(a1.value * 360),
       child: _dialog(ctx),
     );
   },
   transitionDuration: const Duration(milliseconds: 300),
 );
}

 

Вращение — это лишь один из возможных вариантов. Автор статьи «Learn How To Animate Dialogs In Your Flutter Apps» в качестве примера приводит вариант анимации с масштабированием. Выглядит не менее эффектно. Если же штатных возможностей анимации вам не хватило, то подключите сторонний плагин, например, flutter_animated_dialog.

Пишем асинхронный код

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

Во многих языках поддержка асинхронного программирования заложена изначально. Dart не исключение. Реализуется через библиотеку dart:async с двумя фундаментальными классами — Future и Stream. Привычные конструкции async/await строятся как раз при помощи класса Future. Второй класс Stream заведует управлением потоками, то есть асинхронными последовательностями данных.

Теперь о работе с ошибками. Обработка состоит из двух этапов: перехват и действие. Используются обратные вызовы then и catchError. Можно создавать кастомные обработчики для разных ошибок. Чтобы перейти от теории к практике, изучите примеры в туториале «Dart: Futures and Streams». Автор собрал множество образцов кода для самых распространённых сценариев использования. В качестве отправной точки— идеально.

Кодинг в RADость

Flutter самый популярный, но не единственный фреймворк для языка Dart. Когда нужна разработка веб-приложения, то стоит обратить внимание на фреймворк Rad. Он взял лучшее от Flutter и React и был создан на чистом Dart. Этот фреймворк стал ещё одной возможностью писать код для фронтенда.

Как рассказывает автор Rad, он создавал его безотносительно других фреймворков. Так что говорить о каких-то специфических преимуществах будет некорректно. Rad разделяет ту же парадигму, что и Flutter. По производительности сравним с React. Документация не блещет подробностями, но вполне достаточна, чтобы быстро разобраться в использовании.

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

Строим замки из песка

Настроить окружение на одной машине разработчика несложно. Но что делать, если таких машин десятки, например, в студенческой аудитории? А если совсем нет времени на настройку? Все эти вопросы имеют одно простое решение — IDE и среду исполнения непосредственно в браузере.

Две недели назад на Reddit появился анонс Zapp. Это IDE для разработки на Flutter и Dart, запускаемая прямо в браузере. Она максимально похожа на Visual Studio Code. Пока что находится в стадии закрытого бета-теста, но уже сейчас заявлены следующие фичи:
 

  • Использование любого пакета из Pub. Каждый пакет, имеющий поддержку веб-платформы Flutter или Dart может быть добавлен в pubspec.yaml и запущен непосредственно в браузере.
  • IntelliSense. Привычная подсветка синтаксиса и автодополнение кода — всё по-взрослому и работает точно также, как и в VSCode.
  • Просмотр и шаринг. Всё, что вы сделали можно расшарить друзьям или коллегам. Каждый проект получает уникальный URL и становится доступным. Удобно для код-ревью и парного программирования.
  • Палитра команд. Собственно то, за что любят VSCode. Скоростной поиск и запуск разных команд из единой строки.

 

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

Конкурсы для разработчиков

Онлайн

Quiz

 

Мы в Evrone любим тренировать мозг интересными квизами по разным технологиям. На текущий момент это квизы по Python, Ruby, Golang, Frontend и DevOps.

Чтобы проходить квизы было интереснее, мы разыгрываем призы. Если хотите развлечься, а ещё и выиграть Яндекс Станцию, то скорее регистрируйтесь и отвечайте на вопросы. Розыгрыши проходят в прямом эфире на нашем Youtube-канале.

Принять участие

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых Flutter-разработчиков. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

 

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.