| Index: third_party/pkg/di/lib/src/provider.dart
|
| diff --git a/third_party/pkg/di/lib/src/provider.dart b/third_party/pkg/di/lib/src/provider.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e654457bd045d6bf8eb59b8fad593f417e85716d
|
| --- /dev/null
|
| +++ b/third_party/pkg/di/lib/src/provider.dart
|
| @@ -0,0 +1,50 @@
|
| +library di.provider;
|
| +
|
| +import 'injector_delagate.dart';
|
| +import 'base_injector.dart';
|
| +import 'package:di/di.dart';
|
| +
|
| +abstract class ObjectFactory {
|
| + Object getInstanceByKey(Key key, BaseInjector requester, ResolutionContext resolving);
|
| +}
|
| +
|
| +abstract class Provider {
|
| + final Visibility visibility;
|
| + final Type type;
|
| +
|
| + Provider(this.type, this.visibility);
|
| +
|
| + dynamic get(BaseInjector injector, BaseInjector requestor,
|
| + ObjectFactory objFactory, resolving);
|
| +}
|
| +
|
| +class ValueProvider extends Provider {
|
| + dynamic value;
|
| +
|
| + ValueProvider(type, this.value, [Visibility visibility])
|
| + : super(type, visibility);
|
| +
|
| + dynamic get(BaseInjector injector, BaseInjector requestor,
|
| + ObjectFactory objFactory, resolving) => value;
|
| +}
|
| +
|
| +class TypeProvider extends Provider {
|
| + TypeProvider(type, [Visibility visibility]) : super(type, visibility);
|
| +
|
| + dynamic get(BaseInjector injector, BaseInjector requestor,
|
| + ObjectFactory objFactory, resolving) {
|
| + return injector.newInstanceOf(
|
| + type, objFactory, requestor, resolving);
|
| + }
|
| +}
|
| +
|
| +class FactoryProvider extends Provider {
|
| + final Function factoryFn;
|
| +
|
| + FactoryProvider(type, this.factoryFn, [Visibility visibility])
|
| + : super(type, visibility);
|
| +
|
| + dynamic get(BaseInjector injector, BaseInjector requestor,
|
| + ObjectFactory objFactory, resolving) =>
|
| + factoryFn(new InjectorDelagate(injector, resolving));
|
| +}
|
|
|