Flutter-Projektstruktur

Das Verständnis der Verzeichnisstruktur eines Flutter-Projekts ist entscheidend für eine effiziente Entwicklung.

Dieser Abschnitt bietet eine detaillierte Einführung in die verschiedenen Komponenten eines Flutter-Projekts und ihre Zwecke.


Projektverzeichnisstruktur

Wenn Sie verwendenflutter createNach dem Erstellen eines neuen Projekts erhalten Sie die folgende Verzeichnisstruktur:

my_app/
├── android/          # Android 平台相关代码
├── ios/              # iOS 平台相关代码
├── lib/              # Dart 代码目录(主要开发目录)
│   └── main.dart     # 应用入口文件
├── web/              # Web 平台相关代码
├── windows/          # Windows 桌面相关代码
├── macos/            # macOS 桌面相关代码
├── linux/            # Linux 桌面相关代码
├── test/             # 测试代码目录
├── pubspec.yaml      # 项目配置文件
├── pubspec.lock      # 依赖锁定文件(自动生成)
├── analysis_options.yaml  # Dart 分析器配置
└── README.md         # 项目说明文件

Beschreibung der Hauptverzeichnisse und -dateien

lib/-Verzeichnis - Kerncode-Verzeichnis

lib/Dieses Verzeichnis ist der Hauptort, an dem Sie Dart-Code schreiben. Die gesamte Anwendungslogik sollte hier platziert werden.

Datei/VerzeichnisBeschreibung
main.dartDie Einstiegsdatei der Anwendung, die die main-Funktion und das Root-Widget enthält.
*.dartAndere Dart-Quelldateien, normalerweise nach Funktionsmodulen organisiert.

android/-Verzeichnis - Android-Plattform

Enthält native Android-Projektdateien, verwendet für:

  • Anwendungsnamen und Symbol konfigurieren
  • Festlegen von Anwendungsberechtigungen
  • Native SDKs integrieren (z. B. Google Play-Dienste)

ios/-Verzeichnis - iOS-Plattform

Enthält native iOS-Projektdateien (Xcode-Projekt), verwendet für:

  • Anwendungsnamen und Symbol konfigurieren
  • iOS-spezifische Konfiguration festlegen
  • CocoaPods-Abhängigkeiten integrieren

test/-Verzeichnis - Testcode

Enthält den Testcode der Anwendung, normalerweise einschließlich:

  • Unit-Testing
  • Widget-Tests
  • Integrationstests

pubspec.yaml - Projektkonfiguration

pubspec.yamlDie zentrale Konfigurationsdatei des Flutter-Projekts, die den Projektnamen, die Version, Abhängigkeiten usw. definiert.

Beispiel: pubspec.yaml Beispiel

# Projektname
name
: my_app
# Projektversion
version
: 1.0.0+1

# Projektbeschreibung
description
: "Meine erste Flutter-App"

# Laufzeitumgebung
environment
:
  sdk
: ^3.0.0

# Projektabhängigkeiten
dependencies
:
  flutter
:
    sdk
: flutter

  # Drittanbieter-Abhängigkeiten hinzufügen
  http
: ^1.0.0
  Anbieter
: ^6.0.0

# Entwicklungsabhängigkeiten (nur während der Entwicklung verwendet)
dev_dependencies
:
  flutter_test
:
    sdk
: flutter
  flutter_lints
: ^3.0.0

# Flutter-Konfiguration
flutter
:
  uses-material-design
: true

  # Ressourcendateien konfigurieren
  assets
:
   - images/
    - assets/data.json

Häufige Felder in pubspec.yaml

FieldsBeschreibung
nameProjektname, muss aus Kleinbuchstaben und Unterstrichen bestehen.
versionProjektversionsnummer, im Format x.y.z.
descriptionProjektbeschreibungstext
dependenciesLaufzeit-Abhängigkeitspakete
dev_dependenciesFür die Entwicklung benötigte Pakete (z. B. Testwerkzeuge)
flutter.assetsRessourcendateien, die mitverpackt werden müssen

Abhängigkeitsverwaltung

Abhängigkeit hinzufügen

Nutzungflutter pub addBefehl zum Hinzufügen von Abhängigkeiten:

$ flutter pub add http

Oder manuell bearbeitenpubspec.yamlFühren Sie dann aus:

$ flutter pub get

Häufige Abhängigkeitsbefehle

BefehlBeschreibung
flutter pub getAlle Abhängigkeiten abrufen
flutter pub add packageAbhängigkeit hinzufügen
flutter pub remove packageAbhängigkeiten entfernen
flutter pub outdatedAuf veraltete Abhängigkeiten prüfen
flutter pub upgradeAbhängigkeiten auf die neuesten Versionen aktualisieren

Empfohlene Projektstruktur

Mit zunehmendem Umfang der Anwendung wird empfohlen, eine klare Projektstruktur zu verwenden:

lib/
├── main.dart              # 入口文件
├── app.dart               # 应用配置
├── core/                  # 核心功能
│   ├── constants/         # 常量定义
│   ├── theme/             # 主题配置
│   └── utils/             # 工具类
├── data/                  # 数据层
│   ├── models/            # 数据模型
│   ├── repositories/     # 仓库(数据接口)
│   └── services/          # 网络服务
├── domain/                # 领域层
│   └── entities/          # 实体类
├── presentation/          # 展示层
│   ├── pages/             # 页面
│   ├── widgets/           # 组件
│   └── providers/         # 状态管理
└── routes/                # 路由配置

Eine gute Projektstruktur kann die Wartbarkeit des Codes verbessern. Es wird empfohlen, eine geeignete Struktur basierend auf dem Umfang der Anwendung zu wählen.

Weitere Erweiterungen