docs(annotations): improve API documentation and usage example

- Add detailed English doc comments for all main annotations (inject, injectable, instance, provide, scope, etc)
- Add fully documented example/example.dart illustrating real-world DI scenario
- Clarify stub sections (Module class, generated mixins)
- Aligns package with pub.dev quality and best practice requirements

No breaking changes.
This commit is contained in:
Sergey Penkovsky
2025-08-22 09:39:25 +03:00
parent cbb5dcc3a0
commit 264c4bbb88
7 changed files with 135 additions and 3 deletions

View File

@@ -1,5 +1,3 @@
library;
//
// Copyright 2021 Sergey Penkovsky (sergey.penkovsky@gmail.com)
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,6 +11,24 @@ library;
// limitations under the License.
//
/// Annotations for use with the CherryPick dependency injection generator.
///
/// These annotations are used on classes, methods, fields or parameters to
/// describe how they should participate in dependency injection.
/// See: https://pub.dev/packages/cherrypick
///
/// Example:
/// ```dart
/// import 'package:cherrypick_annotations/cherrypick_annotations.dart';
///
/// @injectable()
/// class MyService {
/// @inject()
/// late final Logger logger;
/// }
/// ```
library;
export 'src/module.dart';
export 'src/provide.dart';
export 'src/instance.dart';

View File

@@ -38,5 +38,6 @@ import 'package:meta/meta.dart';
/// ```
@experimental
final class inject {
/// Creates an [inject] annotation for field injection.
const inject();
}

View File

@@ -39,5 +39,6 @@ import 'package:meta/meta.dart';
/// After running the generator, the mixin (`_\$ProfileScreen`) will be available to help auto-inject all [@inject] fields in your widget/service/controller.
@experimental
final class injectable {
/// Creates an [injectable] annotation for classes.
const injectable();
}

View File

@@ -45,5 +45,6 @@ import 'package:meta/meta.dart';
/// See also: [@singleton]
@experimental
final class instance {
/// Creates an [instance] annotation for classes or providers.
const instance();
}

View File

@@ -39,6 +39,6 @@ import 'package:meta/meta.dart';
/// See also: [@singleton], [@instance], [@params], [@named]
@experimental
final class provide {
/// Creates a [provide] annotation.
/// Creates a [provide] annotation for marking provider methods/classes in DI modules.
const provide();
}

View File

@@ -49,5 +49,7 @@ import 'package:meta/meta.dart';
final class scope {
/// The name/key of the DI scope from which to resolve this dependency.
final String? name;
/// Creates a [scope] annotation specifying which DI scope to use for the dependency resolution.
const scope(this.name);
}