ark_di_flutter 0.1.0-dev.1
ark_di_flutter: ^0.1.0-dev.1 copied to clipboard
Flutter scopes and BuildContext access for Ark DI dependency containers.
example/ark_di_flutter_example.dart
import 'package:ark_di/ark_di.dart';
import 'package:ark_di_flutter/ark_di_flutter.dart';
import 'package:flutter/widgets.dart';
void main() {
final DiContainer application = DiContainer.build((final DiBinder binder) {
binder.bindInstance<GreetingRepository>(const GreetingRepository());
});
runApp(
DiRootScope(
container: application,
child: const Directionality(
textDirection: TextDirection.ltr,
child: GreetingFeature(),
),
),
);
}
final class GreetingFeature extends StatelessWidget {
const GreetingFeature({super.key});
@override
Widget build(final BuildContext context) => DiScope(
configure: (final DiBinder binder) {
binder.bindInstance<FeatureName>(const FeatureName('Ark DI Flutter'));
},
child: const GreetingView(),
);
}
final class GreetingView extends StatelessWidget {
const GreetingView({super.key});
@override
Widget build(final BuildContext context) {
final GreetingRepository repository = context.di.get<GreetingRepository>();
final FeatureName feature = context.di.get<FeatureName>();
return Center(child: Text(repository.greetingFor(feature.value)));
}
}
final class GreetingRepository {
const GreetingRepository();
String greetingFor(final String feature) => 'Hello from $feature.';
}
final class FeatureName {
const FeatureName(this.value);
final String value;
}