Entwicklungs-Setup¶
Für alle, die FEGH-Bericht erweitern, debuggen oder forken.
Voraussetzungen¶
| Werkzeug | Version | Hinweis |
|---|---|---|
| Flutter SDK | ≥ 3.24 (Stable Channel) | Dart 3.9 oder höher |
| IDE | VS Code, Android Studio, IntelliJ | Dart- und Flutter-Plugin installieren |
| Git | beliebig | Für Repo-Operationen |
| Windows-Build | Visual Studio 2022 mit "Desktop Development with C++" | Plattform-Tools, Build-SDKs |
| macOS-Build | Xcode 15+, CocoaPods | Apple-Entwickler-Konto für Notarisierung |
| Linux-Build | clang, ninja-build, libgtk-3-dev, libsecret-1-dev | Standard-Build-Toolchain |
Flutter installieren¶
git clone https://github.com/flutter/flutter.git -b stable
export PATH="$PATH:`pwd`/flutter/bin" # bzw. PowerShell: $env:Path
flutter doctor
flutter doctor muss alle Komponenten mit ✓ zeigen, bevor du baust.
Repo klonen¶
git clone https://github.com/miri2577/FEGH-Bericht.git
cd FEGH-Bericht
flutter pub get
Erststart in der Entwicklung¶
flutter run -d windows # bzw. -d macos / -d linux
Hot Reload mit r, Hot Restart mit R, Beenden mit q.
Debug vs. Release¶
| Modus | Befehl | Eignung |
|---|---|---|
| Debug | flutter run |
Hot Reload, Inspector, Logs |
| Profile | flutter run --profile |
Performance-Messung |
| Release | flutter run --release |
Endbenutzer-Build |
Im Debug-Mode sind zusätzliche Assertions aktiv. Für UX-Tests Release-Build verwenden — die Startzeit ist deutlich kürzer.
Plattform-Build¶
# Windows
flutter build windows --release
# → build/windows/x64/runner/Release/teilhabe_assist.exe
# macOS
flutter build macos --release
# → build/macos/Build/Products/Release/teilhabe_assist.app
# Linux
flutter build linux --release
# → build/linux/x64/release/bundle/teilhabe_assist
Tests laufen¶
flutter test # alle Tests
flutter test test/features/pseudonymization/ # nur Pseudonymisierung
flutter test --coverage # mit Coverage-Report
Coverage-Report wird unter coverage/lcov.info abgelegt. Für ein
HTML-Render:
brew install lcov # macOS — auf Windows: choco install lcov
genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html
Lint¶
flutter analyze
Lint-Konfiguration in analysis_options.yaml — basiert auf
flutter_lints plus einige projektspezifische Ergänzungen.
Vor jedem Commit prüfen:
flutter analyze && flutter test
VS Code-Setup¶
.vscode/settings.json (nicht in Git, lokal anlegen):
{
"dart.flutterSdkPath": "C:/Users/<USER>/flutter",
"dart.lineLength": 80,
"editor.formatOnSave": true,
"editor.rulers": [80, 100],
"files.exclude": {
"**/.dart_tool": true,
"**/build": true
}
}
Empfohlene Extensions: - Dart-Code.dart-code (Dart-Sprachsupport) - Dart-Code.flutter (Flutter-Tools) - ms-vscode.hexeditor (Hive-Files anschauen — read-only)
Hot-Reload-Falsstricke¶
Hot-Reload funktioniert nicht für:
- Änderungen an
main() - Statische Felder (
static const) - Neue oder umbenannte enum-Werte
- Hive-Box-Initialisierungen
- Provider-Overrides in
ProviderScope
Bei diesen Änderungen Hot Restart (R) oder voller Neustart nötig.
Build-Probleme¶
Windows: "MSBuild not found"¶
Visual Studio Installer öffnen, "Desktop Development with C++"-Workload + Windows 10 SDK installieren.
macOS: "CocoaPods not installed"¶
sudo gem install cocoapods
cd macos && pod install
Linux: "Could not find libsecret"¶
sudo apt install libsecret-1-dev
"Plugin xy depends on registrar"¶
Geneuerter Plugin-Registrant ist out-of-sync. Lösung:
flutter clean
flutter pub get
Code-Stil¶
dart format --line-length=80vor jedem Commit- Variablen-Namen in
lowerCamelCase, Klassen inUpperCamelCase, Konstanten inkCamelCaseoderSCREAMING_SNAKE(Konvention im Projekt:kFoo) - Imports gruppiert:
dart:*,package:flutter/*,package:*, dann relative Imports - Doc-Kommentare
///für public APIs, Inline-Kommentare nur, wenn der Code nicht offensichtlich ist
Dependencies aktualisieren¶
flutter pub outdated # zeigt veraltete Packages
flutter pub upgrade # ohne Major-Bumps
flutter pub upgrade --major-versions # mit Major-Bumps (Vorsicht!)
Major-Bumps nicht ohne Test-Lauf mergen. Insbesondere hive,
pointycastle und flutter_secure_storage sind sicherheitsrelevant.
Release-Checkliste¶
- Version in
pubspec.yamlerhöhen (version: 0.3.0+3) CHANGELOG.mdaktualisierenflutter analyzeohne Fehlerflutter testalle grün- Plattform-Builds (Win/Mac/Linux) testen
- GitHub-Release mit Binaries pushen
- Wiki ggf. aktualisieren
- Audit-Log-Tests gegen Migration testen — Hash-Chain-Migration darf keine bestehenden Einträge invalidieren