Aus öffentlichen Paketdaten erstellte Orientierung.
Gate Generator ist ein Codegenerierer für Dependency Injection in Flutter- und Dart-Anwendungen, der Annotations und build_runner nutzt, um Boilerplate-Code automatisch zu generieren. Er vereinfacht die Einrichtung der Dependency Injection, indem er annotierte Klassen analysiert und zur Kompilierzeit die notwendige Registrierungs- und Auflösungslogik generiert. Dadurch wird der Laufzeitaufwand reduziert und die Typensicherheit verbessert. Das Werkzeug lässt sich nahtlos in bestehende Projekte mit minimaler Konfiguration integrieren und eignet sich daher hervorragend für skalierbare und wartbare Anwendungsarchitekturen.
Anwendungsfälle
Automatisierung der Abhängigkeitsinjektion-Einrichtung
Reduzierung von manuellem DI-Boilerplate
Verbesserung der App-Skalierbarkeit
Typsichere Dienstauflösung aktivieren
Unterstützung des modularen Anwendungsdesigns
Hauptmerkmale
Annotation-basierte Konfiguration
Build Runner Integration
Codegenerierung zur Kompilierzeit
Minimale Laufzeitüberhead
Typsichere Abhängigkeitsauflösung
Geeignet für
Großskalige Flutter-Anwendungen
Teams, die Wartbarkeit priorisieren
Projekte mit sauberer Architektur
Entwickler, die eine automatisierte DI-Einrichtung suchen
Anwendungen mit hoher Testbarkeit
Hinweise
build_runner-Einrichtung erforderlich
Beschränkt auf die Generierung zur Kompilierzeit
Abhängig von der korrekten Verwendung von Annotationen
Kann die Build-Zeit leicht erhöhen
Nicht geeignet für dynamische DI-Szenarien
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
💎 Features
Provide Injectable as a singleton
Provide Injectable as a dynamic service
Inject an Injectable class into another
💡 Motivation
Providing Service should be independent from your pages or other code.
The DI pattern separates the responsibility of creating an object of the service class out of the client class.
Also using code generation we can get rid of the boilerplate part.
🚀 Getting started
install gate with build_runner in you pubspec.yaml
You can inject as many dependency as you want into your class as long as their are Injectable.
part 'coffee_page.gate_inject.g.part'; will be be added to your file
this file will be genererated on next step
don't forget to import "gate_provider.dart" that is generated next
3. Generate code
Using build runner you can run the command in your shell
flutter packages pub run build_runner build --delete-conflicting-outputs
Once build runner is done, you can run your flutter app and use all injected class.
If you change your factory or wants to inject other class... just rerun the build_runner 😀
📗 Properties
Annotation
Description
Injectable
mark a class as containing Singleton or Provide factories
Singleton
mark a factory as a Singleton Injectable
Provide
mark a factory as a Dymamic Injectable. Each time you inject will create a new instance of that class
Inject
mark a class to inject dependencies
Inject annotation
Property
Description
children
a list of InjectedChild
InjectedChild annotation
Property
Description
type
The type to inject
factoryName
The factory name to use
attrName
(optionnal) The attribute name to call it from your class
✅ Tests
Run tests
dart pub global activate coverage
dart test --coverage="coverage"
format_coverage --lcov --in=coverage --out=coverage.lcov --packages=.packages --report-on=lib
Mock an injected dependency for testing
To remplace your service by mocks, you have to set them, before testing.
Gate will generate all methods for you.
First, declare your mocked services with your preferred libraries.
Then use the appProvider to set mocks.
Finally, don't forget to reset mocks by setting them to null.