Compile-time metadata that marks a class Type
or Function
for injection.
The @Injectable()
annotation has two valid uses:
- On a class
Type
- On a top-level
Function
Use #1: A class Type
The class must be one of the following:
- non-abstract with a public or default constructor
- abstract but with a factory constructor
A class annotated with @Injectable()
can have only a single constructor
or the default constructor. The DI framework resolves the dependencies
and invokes the constructor with the resolved values.
Example
// Use the default constructor to create a new instance of MyService.
@Injectable()
class MyService {}
// Use the defined constructor to create a new instance of MyService.
//
// Each positional argument is treated as a dependency to be resolved.
@Injectable()
class MyService {
MyService(Dependency1 d1, Dependency2 d2)
}
// Use the factory constructor to create a new instance of MyServiceImpl.
@Injectable()
abstract class MyService {
factory MyService() => new MyServiceImpl();
}
Use #2: A top-level Function
The Injectable()
annotation works with top-level functions
when used with useFactory
.
Example
// Could be put anywhere DI providers are allowed.
const Provide(MyService, useFactory: createMyService);
// A `Provide` may now use `createMyService` via `useFactory`.
@Injectable()
MyService createMyService(Dependency1 d1, Dependency2 d2) => ...
Constructors
- Injectable()
-
const
Properties
- hashCode → int
-
Get a hash code for this object.
read-only, inherited - runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Operators
-
operator ==(
other) → bool -
The equality operator.
inherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited -
toString(
) → String -
Returns a string representation of this object.
inherited