Несколько лет назад я немного занимался разработкой для Android и iOS, используя Java и Objective-C. Проработав около месяца с ними обоими, я решил двигаться дальше. Я просто не мог понять это.

Но недавно я узнал о Flutter и решил дать еще один шанс разработке мобильных приложений. Я сразу влюбился в него, потому что он делал разработку многоплатформенных приложений очень увлекательной. Узнав об этом, я создал приложение и библиотеку с его помощью. Флаттер кажется очень многообещающим шагом вперед, и я хотел бы объяснить несколько различных причин, по которым я верю в это.

На базе Dart

Flutter использует язык Dart, разработанный Google. Если вы раньше пользовались Java, то наверняка знакомы с синтаксисом Dart, поскольку они очень похожи. Помимо синтаксиса, Dart - это совершенно другой язык.

Я не собираюсь подробно рассказывать о Dart, поскольку это немного выходит за рамки, но я хотел бы обсудить одну из самых полезных, на мой взгляд, функций. Эта функция поддерживает асинхронные операции. Dart не только поддерживает его, но и делает его исключительно простым.

Это то, что вы, скорее всего, будете использовать во всех своих приложениях Flutter, если вы выполняете ввод-вывод или другие трудоемкие операции, такие как запросы к базе данных. Без асинхронных операций любые трудоемкие операции приведут к зависанию программы до их завершения. Чтобы предотвратить это, Dart предоставляет нам ключевые слова async и await, которые позволяют нашей программе продолжать выполнение, ожидая завершения этих более длительных операций.

Давайте рассмотрим несколько примеров: один без асинхронных операций, а другой с.

И вывод:

Это не идеально. Никто не хочет использовать приложение, которое зависает при выполнении длительных операций. Так что давайте немного изменим это и воспользуемся ключевыми словами async и await.

И еще раз вывод:

Благодаря асинхронным операциям мы можем выполнять код, выполнение которого требует времени, не блокируя выполнение остальной части нашего кода.

Напишите один раз, запустите на Android и iOS

Разработка мобильных приложений может занять много времени, учитывая, что вам нужно использовать другую кодовую базу для Android и iOS. То есть, если вы не используете SDK, такой как Flutter, где у вас есть единая кодовая база, которая позволяет вам создавать приложение для обеих операционных систем. Не только это, но вы можете запускать их полностью изначально. Это означает, что такие вещи, как прокрутка и навигация, и многие другие, действуют точно так же, как и в используемой ОС.

Чтобы сохранить тему простоты, пока у вас работает устройство или симулятор, Flutter упрощает создание и запуск вашего приложения для тестирования, просто нажав кнопку.

UI разработка

Разработка пользовательского интерфейса - одна из тех вещей, которых я почти никогда не жду. Я скорее бэкэнд-разработчик, поэтому, когда дело доходит до работы над чем-то, что сильно от этого зависит, мне нужно что-то простое. Вот где Флаттер сияет в моих глазах.

Пользовательский интерфейс создается путем объединения различных виджетов и их модификации в соответствии с внешним видом вашего приложения. У вас есть почти полный контроль над тем, как отображаются эти виджеты, поэтому вы всегда будете получать именно то, что ищете. Для компоновки пользовательского интерфейса у вас есть такие виджеты, как Row, Column и Container. Что касается контента, у вас есть такие виджеты, как Text и RaisedButton. Это лишь некоторые из виджетов, которые предлагает Flutter, их гораздо больше. Используя эти виджеты, мы можем создать очень простой пользовательский интерфейс:

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

С помощью этого ThemeData мы устанавливаем цвета приложений, семейство шрифтов и некоторые стили текста. Все, кроме стилей текста, будет автоматически применяться ко всему приложению. Стили текста нужно устанавливать вручную для каждого текстового виджета, но это все еще просто:

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

Библиотеки

Flutter из коробки предоставляет множество замечательных функций, но бывают случаи, когда вам нужно немного больше, чем он предлагает. Это совсем не проблема, учитывая огромное количество библиотек, доступных для Dart и Flutter. Заинтересованы в размещении рекламы в своем приложении? Для этого есть библиотека. Хотите новые виджеты? Для этого есть библиотеки.

Если вы больше делаете все сами, создайте свою собственную библиотеку и поделитесь ею с остальным сообществом в кратчайшие сроки. Добавить библиотеки в ваш проект очень просто, и это можно сделать, добавив одну строку в ваш pubspec.yaml файл. Например, если вы хотите добавить библиотеку sqflite:

После добавления его в файл запустите flutter packages get, и все готово. Библиотеки упрощают разработку приложений Flutter и экономят много времени во время разработки.

Backend разработка

Большинство приложений в настоящее время зависят от каких-либо данных, и эти данные необходимо где-то хранить, чтобы их можно было отображать и работать с ними позже. Поэтому важно помнить об этом при создании приложений с новым SDK, таким как Flutter.

Еще раз, приложения Flutter создаются с использованием Dart, и Dart отлично подходит для разработки серверной части. В этой статье я много говорил о простоте, и разработка серверных приложений с помощью Dart и Flutter не является исключением. Создавать приложения на основе данных невероятно просто как для новичков, так и для экспертов, но эта простота никоим образом не означает недостаток качества.

Чтобы связать это с предыдущим разделом, доступны библиотеки, так что вы можете работать с выбранной базой данных. Используя sqflite библиотеку, мы можем довольно быстро приступить к работе с базой данных SQLite. А благодаря синглетонам мы можем получить доступ к базе данных и запросить ее практически из любого места без необходимости каждый раз воссоздавать объект.

После получения данных из базы данных вы можете преобразовать их в объект с помощью модели. Или, если вы хотите сохранить объект в базе данных, вы можете преобразовать его в JSON, используя ту же модель.

Эти данные бесполезны без возможности показать их пользователю. Именно здесь на помощь Flutter приходят такие виджеты, как FutureBuilder или StreamBuilder. Если вас интересует более глубокий взгляд на создание приложений, управляемых данными с использованием Flutter, SQLite и других технологий, я рекомендую вам ознакомиться со статьей, которую я написал об этом:



Последние мысли

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