Организация файлов приложения Flutter

Организация файлов приложения Flutter

Примечание: некоторые сведения устарели – статья была написана до того, как Codemagic из компонента Flutter стал универсальным инструментом для непрерывной интеграции и развертывания приложений на любых мобильных платформах. Узнать больше об использовании файла конфигурации codemagic.yaml в разработке приложений для Android, iOS, Flutter, React Native, Ionic и Cordova можно здесь.

  • Подведем итоги
  • Организация файлов приложения Flutter

    Организация файлов приложения Flutter

    Очевидно, вы уже обращали внимание на то, что файловая структура Flutter — приложений отличается от других разработок. Скорее всего, вы также обнаружили недостаток инструкций по организации файлов Flutter — приложений. Давайте разберемся.

    Правила организации Flutter-приложений

    Помните цитату из старого фильма «Бойцовский клуб»? «Первое правило «Бойцовского клуба – никогда не говорить о «Бойцовском клубе». То же самое и с Flutter-приложениями: за два года работы с этим фреймворком я не встречал людей, упоминающих правила организации файлов.

    Правило 1: нет почти никаких правил

    Это одновременно источник свободы и хаоса. Программисты знают, что все файлы следует размещать в папке lib, и не более того. Некоторые разработчики используют директорию pages, другие – routes; одни создают папку asset внутри директории lib, другие – рядом. Трудно решить, какой способ правильнее.

    Правило 2: вы не обязаны повторять за другими

    В этом руководстве я не буду указывать на то, что вы должны делать в обязательном порядке. Данная инструкция носит рекомендательный характер: если вы воспользуетесь советами, вам или службе технической поддержки будет проще и быстрее ориентироваться в файловой структуре приложения. Начнем с организации объектов.

    Организация по типам объектов

    Если вы используете инкапсулированные объекты – модели и BLoC паттерны, для них стоит создать папку внутри директории lib, и назвать ее, к примеру, models.

    Организация ресурсных файлов

    Большинство разработчиков согласны с тем, что файлы ресурсов следует хранить вне папки lib. Будет еще лучше, если в директории asset создать поддиректории для разных типов ресурсов: шрифтов, изображений, svg файлов и так далее:

    1. …/assets/images
    2. …/assets/svg
    3. …/assets/fonts

    Классы приложения лучше хранить в одном месте

    Во время разработки Flutter-приложений мы создаем классы, отвечающие за темы оформления, форматирование текста, перевод интерфейса на другие языки, векторную графику. Если таких классов много – лучше создать для каждого типа отдельный файл, и хранить их в поддиректории lib/app.

    Организация файлов приложения Flutter

    Начинаем работать с Flutter

    Примеры классов, используемых в приложении:

    Организация файлов приложения Flutter

    В этом примере все цвета оформления определены в одном файле, AppColors.dart.

    Директория для серверных файлов

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

    lib
    ...
      backend
        services
        utils
        managers

    Отделение тестовых данных от реальных

    Я предпочитаю хранить реальные данные в папке data. Для тестовых данных, используемых в процессе разработки, я создаю отдельную директорию.

    Страницы и маршруты

    Все файлы, являющиеся компонентами страницы, лучше хранить вместе. При формировании страницы используется множество виджетов, поэтому страницей считается верхний в иерархии виджет. Обычно это Scaffold (каркас) и AppBar (панель инструментов); если ваше приложение занимает весь экран, это может быть Container (контейнер), Material (материал), Center (центр) или SizedBox (контейнер заданного размера).

    Виджеты – основа Flutter

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

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

    Подведем итоги

    Если вы работаете с платформой Firebase, есть смысл создать папку – на одном уровне с lib – для размещения в ней всех Firebase файлов, не связанных с Dart. Файлы Dart при этом можно разместить в поддиректории внутри главной папки проекта, lib.

    Главные принципы организации файлов – логика и ясность. Концепция файловой структуры должна быть понятна любому постороннему специалисту. Таким образом, через год после завершения проекта не только вы с легкостью найдете нужные файлы, но и любой другой специалист, которому могут поручить доработку и поддержку приложения.

    Каждый раз, выбирая папку для хранения файлов, спрашивайте себя – будет ли логика размещения файлов в этой папке понятна другим людям. К примеру, если вы – Android -разработчик, для вас очевидна организация файлов по принципам res/drawable и res/values. Такое разделение файлов понятно любому Android-разработчику, и это вполне допустимая практика.

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

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

    Источник: www.internet-technologies.ru

    НЕТ КОММЕНТАРИЕВ

    Оставить комментарий