Структура директорий
Это руководство использует пример сгенерированного кода из демонстрационного приложения EcommerceFlow. Чтобы просмотреть сгенерированный код напрямую, ознакомьтесь с репозиторием на GitHub.
При скачивании кода, сгенерированного в FlutterFlow, вы заметите множество дополнительных файлов и папок по сравнению с тем, что отображается в Code Viewer в FlutterFlow. Эти файлы составляют полную структуру проекта, организованную в соответствии с определенной архитектурой. Понимание этой структуры — это как наличие подробной карты, которая поможет вам ориентироваться в коде и упростит навигацию и настройку вашего проекта FlutterFlow в дальнейшем. Давайте разберемся и изучим эту структуру директорий.
Структура папок
assets/
lib/
- actions/actions.dart
- auth/
- firebase_auth/
- auth_manager.dart
- base_auth_user_provider.dart
- backend/
- api_requests/
- api_calls.dart
- api_manager.dart
- get_streamed_response.dart
- cloud_functions/
- firebase/
- firebase_dynamic_links/firebase_dynamic_links.dart
- supabase/
- schema/
- enums/enums.dart
- structs/
- address_struct.dart
- cart_struct.dart
- ...
- util/
- firestore_util.dart
- schema_util.dart
- carts_record.dart
- ...
- index.dart
- backend.dart
- pages/ ---// empty in this project
- cart/
- cart_counter/
- cart_counter_model.dart
- cart_counter_widget.dart
...
- components/
- square_leading_model.dart
- square_leading_widget.dart
- styled_button_model.dart
- styled_button_widget.dart
- custom_code/
- actions/
- execute_search.dart
...
- flutter_flow/ ---//FF generated files
- custom_functions.dart
- flutter_flow_animations.dart
- flutter_flow_....dart
- nav/
- app_constants.dart
- app_state.dart
- index.dart
- main.dart
pubspec.yaml
Страницы и компоненты
FlutterFlow использует подход, ориентированный на слои, чтобы поддерживать организованность приложения по мере его рост а. Методы аутентификации и backend аккуратно размещены в отдельных разделах auth и backend. Каждая страница, созданная в FlutterFlow, сгенерирует свою собственную папку, содержащую файл widget и соответствующий файл model. Общие компоненты размещаются в подпапках под components/.
Если вы создали вложенные папки в интерфейсе FlutterFlow, они напрямую преобразуются в соответствующие папки в экспортируемом коде. Это дает вам еще больше контроля для группировки и организации различных функций по вашему усмотрению. Например, можно иметь отдельные папки для products, user profile и orders. В приведенном выше примере cart — это папка, явно созданная для хранения всех страниц и компонентов, связанных с корзиной.
assets/
Директория assets/ предназначена для хранения статических файлов, используемых в приложении, таких как изображения, шрифты и другие ресурсы. К этим файлам можно обращ аться в коде через пути к активам, и они включаются в сборку приложения.
lib/
Директория lib/ содержит весь код на Dart, который управляет вашим приложением Flutter. Здесь находится основная структура приложения. Она организована в несколько поддиректорий, чтобы код оставался чистым и удобным в управлении:
actions/
Папка actions содержит Action Blocks на уровне приложения. Каждый Action Block создается как отдельная функция в этой директории. Например, в случае демонстрационного приложения eCommerce функция addToWishlist — это Action Block на уровне приложения, включенный в файл actions.dart.
Future addToWishlist(
BuildContext context, {
required String? productId}) async {
// Add productId to wishlist object
FFAppState().addToLocalWishlist(productId!);
FFAppState().update(() {});
}
auth/
Содержит файлы и папки, связанные с логикой аутентификации, включая интеграции с Firebase или другими сервисами аутентификации.
backend/
Директория backend/ отвечает за обработку всей логики backend и интеграций для вашего приложения Flutter. Это включает запросы API, облачные функции, взаимодействие с базой данных и управление схемами данных. Каждая поддиректория в backend/ выполняет конкретную функцию:
-
api_requests/: Директория api_requests/ обрабатывает всю коммуникацию между приложением и внешними сервисами через API. Она централизует и организует код для выполнения и управления HTTP-запросами и ответами.
-
cloud_functions/: Эта директория используется для хранения функций, взаимодействующих с облачными сервисами, такими как Firebase Cloud Functions. Эти функции применяются для операций, которые должны выполняться на серверной стороне, например, сложные вычисления, обработка данных или отправка уведомлений.
-
schema/: Директория schema/ важна для определения структуры данных, используемых во всем приложении. Она содержит следующие поддиректории и файлы:
- enums/: Хранит типы перечислений, используемые в приложении.
- structs/: Используются для представления пользовательских типов данных, таких как
AddressилиCart. - util/: Содержит вспомогательные функции, такие как
firestore_util.dartиschema_util.dart.
custom_code/
Пользовательские Actions и Custom Widgets, созданные разработчиком, хранятся в этой папке в соответствующих поддиректориях: custom_code/actions и custom_code/widgets.
flutter_flow/
Эта директория генерируется FlutterFlow и содержит различные вспомогательные файлы, поддерживающие работу приложения, такие как пользовательские функции, сгенерированные темы, навигация и многое другое.
app_constants.dart
Этот класс используется для хранения константных значений, применяемых во всем приложении.
app_state.dart
Этот файл содержит класс FFAppState, который отвечает за управление глобальными App States, созданными разработчиком.
main.dart
Файл main.dart служит точкой входа для вашего приложения Flutter. Он начинается с инициализации движка Flutter с помощью WidgetsFlutterBinding.ensureInitialized(). Затем настраивается стратегия URL для веб-приложения, инициализируется FlutterFlowTheme, и настраивается FFAppState для управления глобальным состоянием приложения.