
Как заядлый любитель новинок в IT, еще с первых новостей о многообещающей платформе от Google, а тем более после конференции о флаттере, было решено попробовать Flutter.
Тут будут ИМХО, которые дадут задуматься, а стоит ли тратить свободные человеко-часы.
То, что хотелось посмотреть\попробовать:
- Hot Reload
- Everything is a widget
- Cross-platform
- Красивая анимация, которую презентовали тут — презентация Flutter 1.0
Но у каждой новинки есть недостатки. Возможно, то, что я сейчас опишу, настраивается или «так специально сделано», но меня эти вещи задели и заставили еще раз подумать и оценить, стоит ли прям сейчас переписывать все свои андроидовские проекты, чтобы они «без труда» запускались и на iOs. Как начать писать на Дарт-е, что установить для запуска флаттер-а, как запустить «хот релоад» было много где написано. Тут поделюсь ИМХО, которое построено на основании опыта в Андроид разработке и разбору первого «хелоу ворлд» «из коробки».
Для тех, кто не знает, в чем суть «Хелоу ворлд» «из коробки» от флаттера.
Одна активити, плавающая кнопка с плюсиком, которая при нажатии увеличивает счетчик.

ИМХО №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).
Дальше мой свободный от работы и домашних дел часик закончился, чтобы посмотреть еще что-то. Но даже эти ИМХО отодвинули чуток даты создания пэт-проектов на флаттере.
