Pull to refresh

Flutter: а стоит ли начинать

Reading time 3 min
Views 12K
image
Как заядлый любитель новинок в IT, еще с первых новостей о многообещающей платформе от Google, а тем более после конференции о флаттере, было решено попробовать Flutter.

Тут будут ИМХО, которые дадут задуматься, а стоит ли тратить свободные человеко-часы.

То, что хотелось посмотреть\попробовать:

  1. Hot Reload
  2. Everything is a widget
  3. Cross-platform
  4. Красивая анимация, которую презентовали тут — презентация Flutter 1.0

Но у каждой новинки есть недостатки. Возможно, то, что я сейчас опишу, настраивается или «так специально сделано», но меня эти вещи задели и заставили еще раз подумать и оценить, стоит ли прям сейчас переписывать все свои андроидовские проекты, чтобы они «без труда» запускались и на iOs. Как начать писать на Дарт-е, что установить для запуска флаттер-а, как запустить «хот релоад» было много где написано. Тут поделюсь ИМХО, которое построено на основании опыта в Андроид разработке и разбору первого «хелоу ворлд» «из коробки».

Для тех, кто не знает, в чем суть «Хелоу ворлд» «из коробки» от флаттера.

Одна активити, плавающая кнопка с плюсиком, которая при нажатии увеличивает счетчик.

image

ИМХО №1. Доступ в интернет


Писать Андроид приложение и не посмотреть в файл манифеста, значит вовсе его не писать.
Открывая манифест, первым делом в глаза бросается строчка
<uses-permission android:name="android.permission.INTERNET"/>

(для не андроидщиков, эта строчка дает приложению доступ в интернет).

«То есть как это? Зачем простому счетчику лезть в интернет?» — первое, что промелькнуло в голове. Дальше в голове быстро разрослась картина об утечке информации, тотальной слежке гугла за всеми, а потом если еще и пользователи начнут жаловаться… И тут же рядом заботливые авторы примера комментарием приписали, мол так надо, это для отладки, не переживайте.

    <!-- The INTERNET permission is required for development. Specifically,
         flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->  

Я то конечно еще почитаю, зачем и почему нужно такое разрешение, но то, что даже обычный счетчик просит доступ в интернет, заставило задуматься, а не следит ли ближайший пылесос за моим передвижением (утрированно конечно, но думаю вы поняли о чем я).

ИМХО №2. Темы


Радуясь действительно работающему «хот релоад», которое было опробовано на смене цвета темы (поменялись цвета тайтл бара и плавающей кнопки), следующим в очередь стало «поменять цвет текста». В общем цвет текста, спустя час разбора этого примера, так и остался тёмно серым. Все потому, что все виджеты в приложении уже по умолчанию имеют стандартные темы (в Андроиде это материал дизайн). И, если вы хотите поменять цвет текста, идите менять тему\стили. А где они описаны надо еще найти… И тут опять заботливые авторы примера приписали.

Не лазьте руками в исходные темы, наследуйтесь от базовой и перепишите свой стиль.
  /// Rather than creating a new text theme, consider using [Typography.black]
  /// or [Typography.white], which implement the typography styles in the
  /// material design specification:
  ///
  /// <https://material.google.com/style/typography.html#typography-styles>
  ///
  /// If you do decide to create your own text theme, consider using one of
  /// those predefined themes as a starting point for [copyWith] or [apply].


Окей, здравая мысль, такое и в родном Андроиде есть, тут же в комментариях пример, как это сделать:

 class TitleColorThemeCopy extends StatelessWidget {
   TitleColorThemeCopy({Key key, this.child, this.titleColor}) : super(key: key);
   final Color titleColor;
   final Widget child;
   @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
     return Theme(
       data: theme.copyWith(
         textTheme: theme.textTheme.copyWith(
           title: theme.textTheme.title.copyWith(
             color: titleColor,
           ),
         ),
       ),
       child: child,
     );
   }
 }

… мне же просто поменять цвет текста только в одном поле… зачем столько много писать…

ИМХО №3. Размер приложения


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

Заходим в настройки телефона — Приложения — MyFirstFlutterApp — Size: 40,68 Mb. (Для сравнения, например, приложение Facebook весит около 53 Mb).

Дальше мой свободный от работы и домашних дел часик закончился, чтобы посмотреть еще что-то. Но даже эти ИМХО отодвинули чуток даты создания пэт-проектов на флаттере.
Tags:
Hubs:
+4
Comments 10
Comments Comments 10

Articles