середа, 18 серпня 2021 р.

Кросплатформена розробка на Flutter. Частина I

 Коротко про Flutter

В компанії Postindustria я працюю iOS-розробником, а у вільний час в якості хобі займаюсь розробкой мобільних додатків для Android. Останні десь два роки я цікавлюсь Flutter - це фреймворк від Google для розробки додатків. Наразі це єдиний фреймворк (як запевняє Google), що дозволяє з одного коду отримувати додатки для шости платформ:
  • iOS
  • Android
  • web
  • Linux
  • macOs
  • Windows
Крім підтримки майже всіх популярних платформ він має наступні переваги:
  • на iOS та Android програма компілюється в нативний код, тобто немає ніяких js-bridges, як, наприклад, для React Native;
  • підтримує just-in-time та ahead-of-time режими компіляції. Перший дозволяє бистро компілювати код при розробці, а другий - отримувати оптимальну швидкодію для release-варіантів.
  • як на мене, підхід до побудови інтерфейсів на Flutter більш приємний і зручніший, ніж нативні варіанти для мобільних платформ; 
  • режим hot reload дозволяє тестувати зміни інтерфейсу без перекомпіляції коду;
  • версії додатка для різних платформ можуть мати однаковий вигляд оскільки всі віджети Flutter малює сам, а не делегує це базовій платформі
До недоліків можно віднести:
  • це продовження останньої переваги. Flutter має багатий набір віджетів, що імітують виджети iOS або Android. Але коли на якійсь платформі з'являється новий, доводиться чекати, коли буде реалізований аналог на Flutter;
  • дуже слабка підтримка SEO для web.
Таким чином, Flutter дуже підходить для розробки додактів, що мають виконуватись більш, ніж на одній платформі. При чому процес проходить дуже швидко и часто навіть приємніше ніж із застосуванням нативних засобів платформи.

 Мета

За останній час я встиг розробити на Flutter кілька простих ігор. В деякі можна грати навіть з іншими гравцями по Internet. Однак, переважна більшість додатків відрізняється від ігор. Як правило, вони звертаються до якогось серверу, отримують данні, показують їх користувачеві, дозволяють їх редагувати. Я вирішив написати один такий невеличкий додаток і описати процесс в кількох статтях. Це не буде детальний опис програмування на Flutter. Я планую показати основні можливості. Також я хочу трохи самому розібратися с Clean Architecture від дядечка Боба і з тестуванням Flutter-додатків.

Додаток

Я розробив невеличкий додаток, що використовує сервис NUMBERSAPI в якості серверної частини. Цей сервіс має невеличкий API для отримання цікавих фактів про числа та дати.
Моя програма буде показувати факти, а також мати можливість перекладати факти на декілька мов.
Декілька скриншотів.
Android:

iOS:

web:


Тут можна побачити, як працює web-версія на сторінці в iframe.
Є невеличка проблема в тому, що на Github використовується https, а на сайте Numbersapi - http. З цієї причини виникає помилка mixed-content при виконанні запитів на Numbersapi. Але загальне уявлення про flutter-додатки в web отримати можна: кнопки і переклад працюють.

На Android встановити додаток можна з Google Play.

Вихідні тексти додатка можна отримати тут.
Для самостійної зборки треба встановити Flutter, як описано тут a також засоби розробки для Android або iOS з емудяторами. Після цього можна запускати:

     flutter run -d Android

  flutter run -d iPhone

  flutter run -d chrome

Для Andoid/iOS після -d треба вказати справжнє ім'я емулятора.

В наступних статтях я буду пояснювати як саме розроблявся цей додаток.

Зміст

1. Кросплатформена розробка на Flutter. Частина I

Немає коментарів:

Дописати коментар