В самом начале работы с Flutter стоит получить хотя бы приблизительное представление о файловой структуре проекта, поскольку в процессе работы основные изменения будут вноситься лишь в небольшую его часть, а многие файлы останутся неизменными до самого релиза. Именно поэтому, в самом начале, необходимо понять, что представляет собой каждая из директорий проекта и в какой из них будет выполняться основная часть работы.
При создании нового Flutter проекта разработчик видит следующую структуру файлов и папок:
Теперь немного о назначении каждой директории и файлов:
.dart_tool - директория используется пакетным менеджером языка программирования Dart (который называется Pub), а также другими инструментами языка программирования Dart. В данную папку мы не вносим никаких изменений.
.idea - в данной директории находятся специфичные для проекта конфигурационные xml файлы, необходимые для Android Studio. В данную директорию мы также не вносим никаких изменений.
android - содержит специфические для платформы Android настройки, исходный код и ресурсы. Здесь находятся редактируемые файлы AnroidManifest.xml и build.gradle, а также ресурсная папка res (в которой, например, будет находиться иконка приложения для Android в различных разрешениях). Если же у вас появится необходимость добавить специфичный для Android платформы код, то вы будите вносить изменения именно сюда.
AndroidManifest.xml
build - в только что созданном проекте данной директории нет, она автоматически создается при запуске проекта. В ней находятся различные продукты сборки и запуска приложения, а также, после запуска команды flutter build appbundle, будут находиться apk и aab файлы необходимые для релиза.
Местонахождение app-release.aab
ios - данная папка очень похожа на папку android, с тем отличием, что в ней находятся специфичные для платформы iOS файлы: настройки, исходный код и ресурсы. Здесь имеется папка Assets.xcassets, которая очень похожа на res в андроиде, а также файл Info.plist, похожий на AndroidManifest.xml. Если же у вас появится необходимость добавить специфичный для iOS платформы код, то вы будите вносить изменения именно сюда.
Info.plist
lib - именно в этой директории проводится основная работа по написанию кода. Изначально внутри находится только файлик main.dart, который содержит функцию main - точку входа в наше приложение. В процессе разработки внутри данной директория появляется целая иерархия других папок, например, папка models - с файлами моделей (описанием данных, которые используются в приложении), или директория screens - с экранами приложения, или же директория services (прослойка для работы с различными API и подключенными пакетами). Помимо этих директорий, появляется и множества других директорий на различных уровнях вложенности. Как правило, данная иерархия разниться от проекта к проекту и зависит, как от его размеров, так и от вкусов разработчиков.
main.dart
test - в данную папку будет добавлять код связанный с автоматическим тестированием.
.gitignore - файл, содержащий список файлов, папок и расширений, которые ледует игнорировать в проекте при работе с Git.
.metadata - содержит связанные с проектом метаданные. Никаких изменений в этот файл самостоятельно вносить не нужно.
analysis_options - файл с опциями для статического анализа кода.
название_проекта .iml - файл автоматически называется по имени вашего Flutter проекта и содержит дополнительные настройки. Никаких изменений в этот файл вносить не нужно.
pubspec.lock - автоматически генерируемый файл, основанный на файле .yaml (смотрите ниже). Он содержит подробную информацию обо всех зависимостях. Никаких изменений в файл, самостоятельно, вносить не нужно.
pubspec.yaml - это конфигурационный файл проекта. Здесь объявляются зависимости, которые необходимы проекту, подключаются необходимые шрифты и подключаются ассеты (картинки, иконки, аудио файлы и т.д.). В данном файле можно изменить название, описание, а также версию кода приложения.
pubspec.yaml
README.md - markdown файл, который используется для описания проекта. В него можно добавлять то, для чего нужен проект, как его настраивать и как им пользоваться. Можете ознакомиться с тем, как оформить README.md файл.