API-Client
Der Dart-API-Client unter lib/api/ ist generiert, nicht von Hand geschrieben. Er wird von openapi-generator (Generator dart-dio) aus der OpenAPI-3.0-Spezifikation von SchulyBackend erzeugt, die unter /openapi/v1.json bereitgestellt wird. Die App bindet ihn als lokales Package über eine path:-Referenz in pubspec.yaml ein (schuly_api).
Neu generieren
Das Backend muss laufen und unter http://localhost:5033 erreichbar sein. Dann:
sh
bun run apigen # Neugenerierung ab http://localhost:5033/openapi/v1.json
bun run apigen:local # gleiches Ziel, expliziter lokaler Aliasapigen reiht drei Schritte aneinander:
- Generieren -
openapi-generator-cli generate -g dart-diogegen die laufende Spezifikation (http://localhost:5033/openapi/v1.json), Ausgabe nachlib/api(pubName=schuly_api,pubLibrary=schuly_api). - Patchen (
apigen:patch) - schreibt die SDK-Constraint inlib/api/pubspec.yamlum. Der Generator setzt sie auf'>=2.18.0 <4.0.0'zurück, was den Build wegen eines Sprachversions-Mismatches bei den Part-Dateien bricht. Der Patch ersetzt sie durch^3.10.0. Alsbun -e-Einzeiler implementiert, damit er in jeder Shell identisch läuft. - Bauen (
apigen:build) -cd lib/api && dart pub get && dart run build_runner build --delete-conflicting-outputs, um den.g.dart-Serialisierungscode zu erzeugen.
Hinweise
openapi.jsonist gitignored - immer aus dem laufenden Backend neu generieren, statt eine lokale Kopie der Spezifikation zu committen.lib/api/**ist vonflutter analyzeausgeschlossen (sieheanalysis_options.yaml), damit die Generator-Ausgabe nie Lint-Checks auslöst.- Die generierten
.g.dart-Dateien werden vonbuild_runnererzeugt; werden sie veraltet, führebun run apigen(oder nur den Schrittapigen:build) erneut aus, um sie zu aktualisieren.
Siehe auch
- Entwicklungsumgebung - Abhängigkeiten installieren, App ausführen.
