diff --git a/example/bin/main_experiment.dart b/example/bin/main_experiment.dart index 52bc4cf..4799a1e 100644 --- a/example/bin/main_experiment.dart +++ b/example/bin/main_experiment.dart @@ -4,15 +4,25 @@ import 'package:dart_di/experimental/scope.dart'; import 'package:dart_di/experimental/module.dart'; class AppModule extends Module { + bool isMock; + + AppModule({required this.isMock}); + @override void builder(Scope currentScope) { - bind().withName("apiClient").toInstance(ApiClientMock()); - bind().withName("networkRepo").toProvide( + bind().withName("apiClientMock").toInstance(ApiClientMock()); + bind().withName("apiClientImpl").toInstance(ApiClientImpl()); + + bind() + .withName("networkRepo") + .toProvide( () => NetworkDataRepository( - currentScope.resolve(named: "apiClient"), + currentScope.resolve( + named: isMock ? "apiClientMock" : "apiClientImpl", + ), ), - ); - // .singeltone(); + ) + .singeltone(); bind().toProvide( () => DataBloc( currentScope.resolve(named: "networkRepo"), @@ -23,7 +33,7 @@ class AppModule extends Module { void main() async { final scope = openRootScope().installModules([ - AppModule(), + AppModule(isMock: false), ]); final dataBloc = scope.resolve(); @@ -77,6 +87,14 @@ class ApiClientMock implements ApiClient { @override Future sendRequest( {@required String? url, String? token, Map? requestBody}) async { - return 'hello world'; + return 'Local Data'; + } +} + +class ApiClientImpl implements ApiClient { + @override + Future sendRequest( + {@required String? url, String? token, Map? requestBody}) async { + return 'Network data'; } }