Альфа-версія Flutter для Linux і розробка настільних застосунків

Альфа-версія Flutter для Linux і розробка настільних застосунків
13 хв. читання
16 вересня 2020

Матеріал являється перекладом статті написаної Крісом Селлзом з Google та представником компанії Canonical Кеном Вандіном.

В тому, що стосується Flutter, компанія Google завжди прагнула зробити цей фреймворк універсальним інструментом, що дозволяє створювати привабливі інтерфейси, що працюють на будь-яких платформах так само швидко, як інтерфейси «рідних» застосунків цих платформ. Щоб переконатися в тому, що це можливо, ми почали з того, що зосередили зусилля на мобільних платформах - Android і iOS. В результаті в Google Play виявилося опубліковано понад 80 000 швидких і красивих Flutter-застосунків.

Ми, спираючись на досягнуті успіхи, ось уже понад рік зайняті розширенням можливостей Flutter на настільні платформи - на Linux, macOS і Windows. Це стосується і веб-застосунків, і традиційних настільних проєктів. Зокрема, ми зайняті серйозним рефакторингом рушія Flutter. Рефакторинг спрямований на підтримку роботи з мишею і клавіатурою в тому стилі, в якому це прийнято в настільних системах, а так само на підтримку вікон, розмір яких можна змінювати. Сюди входять і нові можливості для користувача інтерфейсів, які добре підходять для настільних платформ. Це, наприклад, підтримка Material Density і NavigationRail . Сюди ж відносяться і експерименти по глибокій інтеграції з настільними операційними системами завдяки Dart: FFI, І робота з системними меню і зі стандартними діалоговими вікнами. Все це робилося для того щоб переконатися в тому, що Flutter підходить не тільки для створення мобільних проєктів, а й готовий до того, щоб на його основі можна було б розробляти справжні настільні застосунки.

Ми вже давно бачимо Flutter як інструмент для створення проєктів, призначених для найрізноманітніших платформ. В Google це бачення представлено проктами на кшталт Assistant. Тепер же ми з хвилюванням спостерігаємо за тим, як інші компанії впроваджують підтримку Flutter в нові платформи. Сьогодні Google і компанія Canonical, яка займається підтримкою Ubuntu - найпопулярнішого Linux-дистрибутива в світі, з задоволенням роблять спільну заяву про вихід альфа-версії Flutter для Linux.

Навіщо в Linux потрібна підтримка Flutter?

У минулому році, коли компанія Google повідомила про можливість розробки настільних застосунків з використанням Flutter, компанія Canonical побачила в цьому привабливу можливість зробити дистрибутиви Linux, у тому числі Ubuntu, привабливою цільовою платформою для розробників Flutter-застосунків. Flutter, в плані крос-платформних можливостей, стрімко рухається вперед. У компанії Canonical з'явилося бажання потрапити в авангард цього руху. Сприяючи підтримці Linux-застосунків під Flutter, Canonical дає розробникам Flutter-застосунків дуже простий механізм публікації їх розробок в Snap Store, магазині застосунків для Linux. Роблячи Linux платформою яка офіційно підтримує Flutter-застосунки, Canonical дає розробникам можливість представити свої проєкти мільйонам Linux-користувачів і розширити кількість якісних проєктів, Canonical особливо привабливими здаються наступні особливості Flutter і екосистеми цього фреймворка:

  • Швидко зростаюче співтовариство розробників застосунків.
  • Підтримка безлічі платформ.
  • Можливість розробки добре оптимізованих нативних застосунків.
  • Можливості, характерні для сучасних UI-фреймворків, такі, як підтримка декларативних, реактивних та придатних для компонування віджитів.
  • Багате можливостями середовище розробки застосунків з використанням VS Code, Android Studio і IntelliJ.

Оголоження Google про розробку настільних застосунків під Flutter стався з альфа-релізу, що підтримує застосунки для macOS, і планів щодо підтримки застосунків для Linux і Windows. Canonical зробила серйозний вклад в розробку Flutter, виділивши команду розробників, яка працюючи спільно з розробниками з Google, націлена на те, щоб користувачі більшості дистрибутивів Linux могли б з усіма зручностями користуватися Flutter-застосунками. Canonical продовжить спільну роботу з Google, спрямовану на подальше поліпшення підтримки Linux і на підтримку можливостей, доступних Flutter-застосунків в Linux, на тому ж рівні, на якому знаходиться підтримка можливостей інших платформ.

Flokk - застоснок як доказ готовності Flutter для настільних систем

Для того щоб показати, що Flutter готовий до розробки мобільних застосунків, ми, працюючи з дизайнерами та розробниками з gskinner , створили інноваційний і привабливий настільний Flutter-застосунок. Це - Flokk - реальний застосунок, який працює зі справжніми даними. Зокрема - зі списком контактів з Google Contacts. 

Ця програма дозволяє управляти контактами. Зокрема - шукати контакти, додавати нові контакти і редагувати існуючі. Flokk, крім того, дозволяє пов'язувати з контактами відповідні облікові записи Twitter і GitHub і працювати з даними з цих облікових записів.

Альфа-версія Flutter для Linux і розробка настільних застосунків

Застосунок Flokk Contacts створено на Flutter в розрахунку на настільні комп'ютери. Те, що застосунок може виводити повідомлення, що надходять з Twitter і GitHub, перетворює його в щось на зразок персональної соціальної мережі користувача. Якщо ж вас цікавить, соціальна мережа поки не інтегрована з Flokk, вирішити цю проблему можна, просто відправивши відповідний PR в репозиторій проєкту, так як Flokk - повністю опенсорсний проєкт. Крім того, що у Flokk реалізовані інноваційні ідеї, що стосуються взаємодії користувачів, в цьому застосунку використовуються можливості Flutter, спрямовані на створення привабливих і зручних інтерфейсів. Один із прикладів таких можливостей представлений на наступному малюнку. Тут показано те, що при перемиканні на темну тему застосунки здійснюється не проста, а анімована зміна кольору.

image

Можливості Flutter дозволяють використовувати під Flokk плавну анімацію, високопродуктивний скролінг і спрощують його використання. Креативна команда фахівців, що стоїть за Flokk, працює під управлінням Гранта Скіннера, Який добре відомий чудовими дизайнерськими рішеннями і реалізаціями новаторських ідей в сфері UX. Ось що Грант сказав про роботу з Flutter в Linux:

«Розробка програми Flokk Contacts виявилася дуже легким завданням! Ми змогли застосувати тут весь свій досвід Flutter-розробки і створити застосунок, який орієнтований на Linux, не вдаючись до якихось особливих прийомів і застосунок чудово працює. Нам дуже сподобалося працювати з командою Canonical. Вони були сповнені ентузіазму, були захоплені нашою справою, вони прагнули зробити Flutter краще, думаючи не тільки про Linux, але і про всі інші платформах. Це був чудовий проєкт і мені дуже подобаються перспективи розробки Flutter-застосунків для інших настільних ОС »

Якщо ви хочете скористатися Flokk на своєму Linux-комп'ютері, ви можете завантажити найсвіжіший реліз застосунку з GitHub. А якщо ви застосовуєте snapd - ви можете завантажити Flokk зі Snap Store .

Легка установка Flutter в Linux

Тепер, коли ви вже бачили те, на скільки якісні настільні застосунки можна створювати за допомогою Flutter, зокрема - Linux-застосунки, вам може захотітися попрацювати з Flutter на власній Linux-машині. Для того щоб максимально спростити процес підготовки Linux-систем до розробки Flutter-застосунків, ми із задоволенням повідомляємо про те, що Flutter SDK для Linux доступний у вигляді snap-пакета в Snap Store. Цей пакет містить все, що необхідно для розробки Flutter-застосунків з використанням вашого улюбленого дистрибутива Linux. При цьому вам не потрібно буде встановлювати цілу купу залежностей розробки. Все що потрібно - це встановити snap-пакет Flutter SDK і IDE, яка вам подобається. Після цього у вашому розпорядженні буде все необхідне для створення, збірки та публікації власних Linux-застосунків. Наприклад, якщо ви хочете приступити до розробки Flutter-застосунків на Linux, і при цьому вам подобається Visual Studio Code, ось набір команд, які вам знадобиться виконати в терміналі:

$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter

Якщо ви хочете, працюючи в Linux, займатися створенням не тільки настільних, а й мобільних застосунків, підготуватися до цього можна, встановивши Android SDK або Android Studio (сюди вже включений Android SDK). Подробиці про snap-пакет Flutter SDK ви можете знайти тут .

Розробка настільних Linux-застосунків

Після того, як ви встановили Flutter SDK на Linux-комп'ютер, щоб створювати настільні застосунки, вам потрібно перейти на канал dev або master й оновити Flutter. Потім потрібно включити підтримку настільних Linux-застосунків:

$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop

Тепер, коли ви створите новий Flutter-проєкт, у вас буде піддиректорія linux, яка дозволяє запустити застосунок на Linux:

$ flutter create counter
$ cd counter
$ flutter run -d linux
Альфа-версія Flutter для Linux і розробка настільних застосунків

Знаменитий застосунок Flutter Counter відмінно працює і на Linux. У вашому розпорядженні виявиться новенький Linux-застосунок, створений за допомогою Flutter який працює на найсвіжішій стабільної версії GTK+. Якщо у вас вже є Flutter-проєкт, який ви хочете оснастити підтримкою Linux, ви можете додати в свій проєкт директорію linux самостійно:

$ cd my_flutter_app
$ flutter create .

Завдяки цьому буде створено піддиректорія з особливим проєктом, який потрібен для збірки та запуску вашого Flutter-застосунку на настільній системі Linux.

Організація доступу до рідного Linux-коду з Flutter

На додаток до підтримки настільних застосунків шляхом написання Dart-коду для створення віджетів Flutter, ваш настільний Linux-застосунок може звертатися до рідних можливостей Linux, використовуючи канали платформи (platform channels) або інтерфейс зовнішніх функцій (Foreign Function Interface , FFI) для C/C ++ . Або, якщо хочете, можете повторно використовувати вже існуючий код, який можна знайти на pub.dev, На сайті менеджера пакетів для Dart і Flutter. Більшість пакетів, які ви знайдете на pub.dev, написані на чистому Dart, більшість цих пакетів відмінно працюють в Linux-застосунках. Деякі пакети, що звуться плагінами, мають в своєму складі нативний код, який націлений на ту чи іншу платформу. Ми, в рамках цього релізу, опублікували на pub.dev три плагіна, в яких використовується рідний функціонал Linux:

  • url_launcher : відкриває URL в браузері, що використовується за умовчанням.
  • shared_preferences : параметри користувача, використовувані в різних сесіях застосунки.
  • path_provider : відомості про шляхи, які стосуються особливих тек, такі як директорія для завантаження, для зображень та інші.

Кожен з цих плагінів ви можете використовувати в своїх застосунках, але вони, крім того, можуть грати роль прикладів того, як з Flutter-коду можна працювати з рідними можливостями Linux. Наприклад, ось вихідний код реалізації плагіна url_launcher.

Публікація застосунків в Snap Store

Для того щоб опублікувати свій Flutter-застосунок в Snap Store, вам спочатку знадобиться встановити Snapcraft - інструмент, який використовується для складання і публікації застосунків у вигляді snap-пакетів:

$ sudo snap install snapcraft --classic

Для того щоб скористатися можливостями Snapcraft, вам знадобиться створити в директорії проєкту застосунку файл snapcraft.yaml. Ось, наприклад, як виглядає такий файл для Flokk:

name: flokk-contacts
version: 1.0.1
summary: Flokk Contacts
description: A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.
confinement: strict
base: core18
grade: stable
apps:
  flokk-contacts:
    command: flokk-contacts
    extensions: [flutter-master]
    plugs:
    - network
parts:
  flokk-contacts:
    source: .
    plugin: flutter
    flutter-target: lib/main.dart # app's main entry-point file

Тепер в директорії з файлом snapcraft.yaml можна запустити Snapcraft для створення snap-пакета програми:

$ snapcraft

Якщо все буде працювати так, як треба, ця команда створить файл в поточній робочій директорії. Називатися він буде приблизно так:

flokk-contacts_1.0.1_amd64.snap

Після того, як ви підготуєте свій обліковий запис для публікації застосунків в Snap Store, ви зможете опублікувати щойно створений snap-пакет:

$ snapcraft login
$ snapcraft register flokk-contacts
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge

Тут ми вивантажуємо застосунок в Snap Store і намагаємося опублікувати його в каналі edge. Після того, як застосунок буде опубліковано в цьому каналі, його можна встановлювати або через настільний клієнт Snap Store, або користуючись командним рядком:

$ snap install --edge flokk-contacts

Подробиці про те, як створити свій перший застосунок і опублікувати його в Snap Store, можна знайти тут .

Приклади настільних Flutter-застосунків

Застосунок Flokk - це відмінний приклад реального проєкту, розрахованого на настільні комп'ютери, що працюють під управлінням Linux. Якщо ви хочете поглянути на приклад простіше - зверніть увагу на застосунок Photo Search. Він створений спеціально для того щоб продемонструвати можливості Flutter по розробці настільних застосунків.

Альфа-версія Flutter для Linux і розробка настільних застосунків

Photo Search - це простий онлайновий застосунок для пошуку фотографій, який використовує кілька плагінів для доступу до рідного функціоналу платформ які ним підтримуються, в число яких входять macOS і Linux. Якщо вам потрібні покрокові інструкції по розробці настільних Linux-застосунків - погляньте на це codelab-керівництво. Воно присвячене використанню OAuth і GraphQL для створення GitHub-клієнта із застосуванням Flutter.

Альфа-версія Flutter для Linux і розробка настільних застосунків

Якщо ви хочете дослідити складніший проєкт, в розробці якого використано набагато більше можливостей Flutter, і в якому можна знайти кілька цікавих прикладів коду, то ви можете поглянути на застосунок Flutter Gallery. Він, в минулому році, був перероблений. Тепер він, на додаток до мобільних платформ, підтримує і настільні. Якщо ви хочете побачити цей застосунок в дії - можете завантажити його з Snap Store .

Альфа-версія Flutter для Linux і розробка настільних застосунків

А ось ще один настільний застосунок, що ілюструє розважальні можливості Flutter. Це - розрахована на багатьох користувачів гра batufo , яку створив Торстен Лоренц. Ця красива гра дозволяє гравцям з усього світу змагатися один з одним в режимі реального часу.

Альфа-версія Flutter для Linux і розробка настільних застосунків

Торстен створював цю гру з урахуванням підтримки різних платформ, в тому числі - Linux, macOS, Android та iOS. Якщо вам цікаво дізнатися про те, як була розроблена ця гра, і якщо ви хочете спостерігати за розвитком цього проєкту - можете подивитися ці відео і заглянути в репозиторій проєкту. У Linux цю гру можна встановити зі Snap Store.

Підсумки

Тепер, після виходу альфа-версії Flutter для Linux, і завдяки тісній взаємодії Google і Canonical, у розробників, що використовують Linux, є можливість користуватися можливостями Flutter для створення застосунків, розрахованих на вибрану ними ОС. Для цього досить встановити Flutter SDK через  snap , зібрати і протестувати застосунок з використанням VS Code або Android Studio, і опублікувати його в Snap Store. Новини про настільну розробку з використанням Flutter шукайте тут. І, що дуже і дуже важливо для нас, постарайтеся залишити відгук про нові можливості Flutter. Це допоможе нам зробити підтримку Flutter-застосунків в Linux настільки якісною, наскільки це можливо. Власне кажучи, того самого ми прагнемо досягти і працюючи з іншими платформами. Flutter для Linux від команди розробників Canonical - це гігантський крок вперед, крок до нашої мрії про те, щоб зробити Flutter найкращим фреймворком для розробки застосунків, розрахованих на будь-які платформи. Те, що тепер Flutter-застосунки можна розробляти для настільних систем, робить рушій Flutter набагато доступнішим для найрізноманітніших пристроїв. Хоча Google і не може безпосередньо підтримувати ці пристрої, компанія планує продовжувати будувати партнерські відносини з іншими компаніями і розвивати екосистему Flutter. Ми хочемо бачити Flutter на всіх пристроях, які потребують швидких і привабливих застосунків.

А ви вже пробували створювати Flutter-застосунки для Linux?

Джерело ENG: medium.com

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід