kfx_dependency_injection 1.6.0
kfx_dependency_injection: ^1.6.0 copied to clipboard
Flutter Dependency Injection library based on dotnet ServiceProvider
1.0.0 #
- Initial fully functional release
1.0.0+1 #
- Fix issues with pub.dev publishing
1.0.0+2 #
- Downgrading Dart requirements to match pub.dev and refactoring project structure
1.0.0+3 #
- Added portuguese documentation as well as some fixes in the English README.md version
1.0.0+4 #
- Add platform info to
ServiceProviderso injected classes can be chosen by platform as well
1.0.0+5 #
- Allows override of registrations (for unit test mocking purposes, for instance)
1.2.0 #
- Allows override of registrations even before the registrations take place
1.3.0 #
- Refactoring to separate write/query methods from
ServiceProvider - BREAKING CHANGE: write methods (i.e.:
registerTransient) no longer requiresServiceProvider.instance(they are now static methods) - BREAKING CHANGE: During registration, a
IServiceProvideris available only with query methods (isRegistered,optionalandrequired) - BREAKING CHANGE: to avoid conflict with the
@overrideattribute, theoverridemethod was renamed toreplace
1.3.1 #
- Added
registerSingletonIfNotRegisteredandregisterTransientIfNotRegisteredto avoid throwing exceptions and making registration idempotent
1.3.1+1 #
- Fixed some grammar errors and refactored the barrel file to make import easier
1.4.0 #
- BREAKING CHANGE: now
registerTransientandregisterSingletonhave the following signature:(optional, required, platform), so you can inject optional and required services in a easier way:
ServiceProvider.registerTransient<SomeAbstractClass>(
(optional, required, platform) => SomeConcreteClassWithDependencies(
dependencyA: optional<DependencyA>(),
dependencyB: required<DependencyB>(),
platform: platform,
),
);
class SomeConcreteClassWithDependencies {
SomeConcreteClassWithDependencies({
this.dependencyA,
this.dependencyB,
this.platform,
});
final DependencyA dependencyA;
final DependencyB dependencyB;
final IPlatformInfo platform;
}
-
Also,
getService<T>()was renamed tooptional<T>()andgetRequiredService<T>()was renamed torequired<T>(). -
Now you can implement
IMustBeTransientorIMustBeSingletonin your services to validate the required type of registration (i.e.: a class that implementsIMustBeTransientwill throw aInvalidRegistrationModalForTypeException, if you try to register it withServiceProvider.registerTransient<ClassThatImplementsIMustBeTransient>((optional, required, platform) => SomeClass()))
1.4.1 #
- Added the
PlatformDesignSystem platformDesignSystemproperty inIPlatformInfo, so you can quickly determine what kind of design system the host platform uses (Material Design for Linux and Android, Apple Human Interface for MacOS or iOS, Fluent Design for Windows)
1.5.0 #
-
More methods added, such as
registerOrReplaceTransient,override,isRegisteredAsSingleton, etc. -
New interface
IInitializablethat will runService.initialize()every time an instance ofServiceis created. -
BREAKING CHANGE: The
replacemethod was renamed tooverride. The newreplacemethod will replace an existing registration (or throws an error if the service isn't registered)
1.5.1 #
- Add
toStringoverrides to all exceptions
1.5.1+1 #
- Fixing some dependencies export
1.5.1+2 #
- Changing the license from GPL3 to BSD3
1.5.2 #
PlatformInfois now publicly available throughServiceProvider
1.6.0 #
- BREAKING CHANGE:
PlatformInfonow has anativePlatformto get info about where is the app running (regarding a native Flutter app (android, ios, windows, etc.) or Flutter web)