Настоящее и будущее фреймворка

27 октября 2022
Настоящее и будущее фреймворка

Есть ли для Flutter место на «кладбище проектов»? Google Stadia, как и многие другие проекты, отправляется в небытие, но это не должно вызывать панику у разработчиков. Корпорация добра вряд ли откажется от этого фреймворка. Сегодня поговорим о полезных инструментах retry и sizer и расскажем, какую роль сыграл Flutter в новой Ubuntu 22.10.

 

Повторить нельзя ждать

 

В идеальном мире соединение устанавливается, данные безошибочно передаются и соединение закрывается. Реальность преподносит сюрпризы в виде неожиданно разорванных соединений или временно перегруженных серверов. Если не продумать как восстановить соединение — Flutter-приложение станет бесполезным куском данных в ОЗУ.

Самый простой вариант — воспользоваться пакетом retry. Официальная документация приводит следующий пример:

import 'package:retry/retry.dart';

final response = await retry(
  // Make a GET request
  () => http.get('https://google.com').timeout(Duration(seconds: 5)),
  // Retry on SocketException or TimeoutException
  retryIf: (e) => e is SocketException || e is TimeoutException,
);
print(response.body);

Здесь по-умолчанию будет 8 попыток, каждая из которых будет увеличивать время экспоненциально, начиная с 400 мс (± 25%). Количество попыток и время между ними можно изменить через RetryOptions.

Почему Google не похоронит Flutter

На момент выхода этого дайджеста знаменитое кладбище проектов содержит уже 275 «мертвецов». Теперь ещё и облачный игровой сервис Stadia. Многие Flutter-разработчики не особо радостно восприняли эту новость. Не станет ли Flutter очередным закрытым проектом?

 

TL;DR — переживать не стоит.

Обсуждение этого вопроса на HackerNews приоткрывает завесу над внутренней кухней Flutter:

  • Количество приложений. Если посчитать, сколько уже создано приложений на Flutter, становится очевидным — это игра «в долгую». В обсуждении фигурирует цифра в 600 тысяч приложений лишь в одном Play Store без учёта других платформ и площадок.
  • Заинтересованные корпорации. Flutter нужен не только Google. В него верят и вкладывают средства так бренды, как Alibaba, BMW, eBay и SHEIN. Он «пустил корни» в самых разных проектах, что делает его положение довольно прочным как внутри Google, так и за его пределами.
  • Миллионы разработчиков. Это не шутка и не преувеличение. На данный момент Flutter активно развивается в таких компаниях как Samsung, Canonical и Sony. Кстати о Canonical мы поговорим чуть ниже.

Становится ясно, Flutter уже прошёл точку невозврата, после которой нет разницы — захочет ли Google закрыть проект или нет. В мире уже накоплена экспертиза и обученные разработчики, которые продолжат делать свою работу. Проблемой потенциально может стать будущее фреймворка, если вдруг Google решит прекратить его разработку. Тем не менее, есть активное коммьюнити и множество компаний, которые способны подхватить эстафету и продолжить развитие.

Адаптируем UI с sizer

Адаптируем UI с sizer

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

Работает он следующим образом. Виджет возвращает 5 важных параметров устройства, на котором запущено приложение:

  1. Высота — .h
  2. Ширина — .w
  3. Масштабируемые пиксели — .sp
  4. Ориентация — SizerUtil.orientation (горизонтальная или вертикальная)
  5. Тип устройства — SizerUtil.deviceType (планшет или смартфон)

Попробуем? Вначале добавьте код импорта в Dart:

import 'package:sizer/sizer.dart';

Далее оберните MaterialApp виджетом ResponsiveSizer:

ResponsiveSizer(
      builder: (context, orientation, deviceType) {
        return MaterialApp();
      }
 )

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

import 'package:sizer/sizer.dart';

Теперь можно создать контейнеры, например:

Теперь можно создать контейнеры, например:

 Container(
      width: 20.w,    // 20 процентов по ширине экрана
      height:30.h     // 30 процентов по высоте экрана
    )

Добавить пространство вокруг контейнера:

  Padding(
      padding: EdgeInsets.symmetric(vertical: 5.h, horizontal: 3.h),
      child: Container(),
    );

Изменить размер шрифта, используя полученное значение масштабируемых пикселей:

 Text(
      'Sizer',style: TextStyle(fontSize: 15.sp),
    );

Добавить поддержку ориентации экрана:

Device.orientation == Orientation.portrait
  ? Container(   // Для вертикальной ориентации
      width: 100.w,
      height: 20.5.h,
   )
  : Container(   // Для горизонтальной ориентации
      width: 100.w,
      height: 12.5.h,
   )

Предусмотреть различное отображение на смартфоне и планшете:

SizerUtil.deviceType == DeviceType.mobile
  ? Container(   // Для смартфона
      width: 100.w,
      height: 20.5.h,
   )
  : Container(   // Для планшета
      width: 100.w,
      height: 12.5.h,
   )

Как видно — работа с этим пакетом элементарна. Советуем не полениться и поставить автору звёздочку на GitHub.

Flutter + Ubuntu = ?

Выход каждой версии Ubuntu всегда обсуждаемое событие. Ubuntu Desktop 22.10 (кодовое имя Kinetic Kudu) стал более привлекательным за счёт новой версии GNOME. Те, кто сильно соскучился по Ubuntu Unity могут снести gnome-shell и прочие пакеты GNOME, после чего накатить ubuntu-unity-desktop. Теперь этот пакет включён в репозиторий universe, за что спасибо Dmitry Shachnev (mitya57).

Окей, новая Ubuntu замечательная, но причём тут Flutter? Усилия Canonical по продвижению snap-пакетов привели к тому, что на свет появилась неофициальная версия магазина приложений. Этот магазин был создан на Flutter и быстро завоевал свою аудиторию. И теперь, в версии 22.10 приставка «unofficial» была убрана и Snap Store на пути к тому, чтобы стать основным в следующей версии Ubuntu.

Canonical активно сотрудничает с Ubuntu Flutter коммьюнити и популяризатором Flutter, Фредериком Файхтмайером (Frederik Feichtmeier). Так что набираемся терпения и ожидаем, что магазин Snap Store станет частью Ubuntu.

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

Онлайн

Flutter Quiz

до 1 декабря 2022

Если хотите быстро проверить себя, а на технические собеседования не готовы — участвуйте в новом квизе по Flutter. Его составляли наши опытные разработчики, так что придётся хорошо подумать.

Среди всех, набравших не менее 6 правильных ответов мы устроим розыгрыш приза (Яндекс.Станцию). Счастливчика определит генератор случайных чисел в прямом эфире на нашем Youtube.

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

Митапы

Онлайн

Flutter Meetup

До нашего зимнего Flutter Meetup осталось не так много времени. Программа мероприятия пока что формируется, но регистрация уже открыта. Детальная информация будет опубликована позже, так что следите за наши новостями. Если у вас есть идея доклада и вы хотите стать спикером, то пишите на почту andy@evrone.com.

Регистрация

 

Пропустили наше предыдущее мероприятие? Не проблема — все доклады уже выложены с превосходным качеством звука и видео на наш Youtube-канал.

Наш коллега, Flutter-разработчик Андрей Хайлов рассказал про основные принципы разделения сложных вычислений и вынесение их из главного потока. Так что если интересно, как всё это выглядит «под капотом», то обязательно посмотрите этот доклад:

 

Следующая злободневная тема — как избежать удаления из сторов. Секреты создания PWA на Flutter раскрыл Дмитрий Шевченко из Surf:

 

Ещё один интересный доклад затронул тему стейт-менеджмента. Сергей Молчановский из Нотамедиа поделился опытом использования BLoC, Freezed и MobX. Он в деталях описал почему первые два инструмента не способны закрыть «боли» разработчика и почему выбор пал на MobX:

Вакансии

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

Evrone 

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

Подробнее

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