Позвольте мне поделиться своей историей о Flutter, которая может быть моей последней. Я начал использовать Flutter в 2018 году, когда мне понадобилась технология, которая помогла бы мне завершить мой семестровый проект за три месяца. Поскольку я никогда раньше не создавал ничего с нуля, используя язык программирования, это была страшная задача, даже при поддержке трех других членов группы. Это было время, когда Flutter только что вышел на рынок, обещая стать лучшим набором инструментов пользовательского интерфейса для создания MVP, а это было именно то, что нам было нужно. Все заботы решены.

Мой первый набег на Flutter был успешным. Никогда еще процесс разработки мобильных приложений не был таким гладким, а пользовательский интерфейс был настолько интуитивным, что CSS стал казаться пережитком прошлого. Мой медовый месяц с Flutter быстро прошел, и мой второй проект оказался совсем другой историей. Я обнаружил, что все больше полагаюсь на своих друзей, которые справятся с тяжелой работой со сложной логикой и серверной частью, в то время как я довольствовался проектированием элементов пользовательского интерфейса. В конце концов, если бы я попытался разработать мобильное приложение с помощью Kotlin или Java, мне пришлось бы обременять себя утомительной задачей написания кода Frontend в XML. Какой это был бы кошмар!

Таким образом, я цеплялся за Flutter, как за защитное одеяло, убежденный, что это самый простой и эффективный вариант в моем распоряжении. Как же я ошибался! По мере того, как я приближался к своему последнему году обучения в колледже, стало ясно, что в радужных перспективах Flutter есть свои шипы, которые застанут вас врасплох. От выбора правильных пакетов до доступа к специфичным для платформы функциям, связанным с собственным кодом, я быстро понял, что мне нужно уделять больше внимания основам программирования Flutter.

Итак, я сосредоточился на написании чистого кода, поддержке пакетов для конкретных проектов и подключении к Firebase и другим сторонним службам. Кроме того, я изучил различные архитектурные шаблоны, такие как MVC, MVVM и BLoC. Это было сложное путешествие, но после года работы я оказался на том уровне, на котором я мог с уверенностью представить себя работающим с Flutter и изучающим его долгие годы.

Несмотря на мой предыдущий опыт работы с Flutter, я быстро столкнулся с новыми проблемами, когда оставил свою первую работу в поисках дальнейшего роста. Каждый клиент Upwork представлял собой уникальный набор препятствий, требующих ряда методов управления состоянием, методов рендеринга пользовательского интерфейса, подходов к выборке данных. Не было единого способа что-то делать, и мне нужно было уметь работать с разнообразными кодовыми базами. Меня засыпали такими требованиями, как внедрение новых методов анимации, внедрение парадигм функционального или объектно-ориентированного программирования, отказ от интеграции с облаком и воспроизведение дизайна для различных платформ, включая Интернет. Излишне говорить, что с этим пришлось столкнуться.

Однако можно возразить: «Разве это не относится к любому фреймворку, среде разработки или языку программирования? Почему ты жалуешься?» Что ж, я рад, что вы спросили. Позвольте мне продемонстрировать мою точку зрения.

  1. Чтобы без проблем работать с Flutter, нужно хорошо знать Dart. Для многих эта кривая обучения сама по себе требует значительных затрат времени и усилий, чтобы пожинать плоды. Хотя можно создать приложение Flutter без предварительного опыта работы с Dart, чтобы по-настоящему освоить Flutter, способность мыслить с точки зрения синтаксиса Dart является абсолютной необходимостью.
  2. Flutter имеет множество виджетов для создания красивых и сложных пользовательских интерфейсов. Однако у каждого виджета есть свой набор свойств и методов, которые необходимо изучить. Даже если вы знаете, что виджет существует, вам все равно нужно понимать его интерфейс, чтобы настроить его под свои нужды. Иногда у виджета может отсутствовать конкретная функция, которая вам нужна, например изменение значка. С каждым новым приложением вы будете сталкиваться с разными потребностями, и потребуется время, чтобы освоить все виджеты, которые предлагает Flutter.
  3. Модель реактивного и декларативного программирования Flutter позволяет разработчикам с легкостью создавать сложные пользовательские интерфейсы. Однако эта модель программирования отличается от традиционного императивного программирования, к которому опытным разработчикам может быть трудно привыкнуть.
  4. Чтобы эффективно использовать Flutter, вам необходимо понимать различные доступные подходы к управлению состоянием, а также преимущества и недостатки каждого из них. Однако, если вы работаете в корпоративной среде, вам может потребоваться использовать систему управления состоянием, рекомендованную компанией, независимо от вашего уровня знакомства или требований проекта. Это требует значительных затрат времени на изучение каждого из подходов к управлению состоянием во Flutter, даже если вы не используете их для конкретного проекта.
  5. Предлагая удобство создания приложений как для Android, так и для iOS, Flutter требует от разработчиков дополнительного набора навыков при работе с реализациями для конкретных платформ, такими как доступ к собственным API. Это может отнимать много времени и отвлекать от реальной задачи. Чтобы стать опытным старшим разработчиком Flutter, можно ожидать создания пакетов, которые обрабатывают нативную сторону вещей, работы с языками Java, Kotlin и Swift и абстрагирования большого количества нативного кода в синтаксический сахар, который предоставляет Flutter.

Имея достаточный опыт, можно научиться разрабатывать приложения с использованием Flutter. Тем не менее, это мастерство связано с кривой обучения, которая равна или выше, чем у других фреймворков. Эта статья не предназначена для того, чтобы обескураживать или критиковать Flutter за сложность; скорее, это проверка реальности. Некоторым читателям может показаться забавным, что я поздно пришел к этому пониманию, но многие разработчики Flutter, включая меня, изначально были привлечены фреймворком из-за его изначальной простоты использования.

Вы никогда не избавитесь от необходимости кодировать, программировать и решать проблемы, независимо от иллюзии комфорта, которую предоставляет фреймворк, такой как Flutter. Итак, все сводится к основам, необходимому количеству терпения и настойчивости. Я надеюсь увидеть тех, кто чувствует себя подавленным течением Flutter на следующей стороне, получая замечательные льготы. А пока продолжайте учиться!