// ignore: depend_on_referenced_packages import 'package:benchmark_cherrypick/di_adapter.dart'; // ignore: depend_on_referenced_packages import 'package:benchmark_harness/benchmark_harness.dart'; import 'package:cherrypick/cherrypick.dart'; class AsyncA {} class AsyncB { final AsyncA a; AsyncB(this.a); } class AsyncC { final AsyncB b; AsyncC(this.b); } class AsyncChainModule extends Module { @override void builder(Scope currentScope) { bind().toProvideAsync(() async => AsyncA()).singleton(); bind() .toProvideAsync( () async => AsyncB(await currentScope.resolveAsync())) .singleton(); bind() .toProvideAsync( () async => AsyncC(await currentScope.resolveAsync())) .singleton(); } } class AsyncChainBenchmark extends AsyncBenchmarkBase { final DIAdapter di; AsyncChainBenchmark(this.di) : super('AsyncChain (A->B->C, async)'); @override Future setup() async { di.setupModules([AsyncChainModule()]); } @override Future teardown() async { di.teardown(); } @override Future run() async { await di.resolveAsync(); } }