depend 5.0.0 copy "depend: ^5.0.0" to clipboard
depend: ^5.0.0 copied to clipboard

depend simplifies dependency management in Flutter apps, providing easy initialization and access to services across the widget tree.

Depend #

Pub Version License Coverage Stars

depend is a library for dependency management in Flutter applications. It provides a convenient way to initialize and access services and repositories via InheritedWidget.


Features 🚀 #

  • Dependency Initialization: Prepare all dependencies before the app launches.
  • Global Access: Access dependencies from anywhere in the widget tree.
  • Parent Dependencies Support: Easily create nested or connected dependencies.
  • Ease of Use: Integrate the library into existing code with minimal changes.

Table of Contents #

  1. Depend
  2. Features 🚀
  3. Installation
  4. Usage Examples
  5. Migration Guide
  6. Code Coverage

Installation #

Add the library to the pubspec.yaml of your project:

dependencies:
  depend: ^latest_version

Install the dependencies:

flutter pub get

Usage Examples #

Example 1: Simple Initialization #

Step 1: Define the Dependency

Create a class that extends DependencyContainer and initialize your dependencies:

class RootDependency extends DependencyContainer {
  final ApiService apiService;

  RootDependency({required this.apiService});


  void dispose() {
    // apiService.dispose()
  }
}

Step 2: Define the DependencyFactory

Create a class that extends DependencyContainer and initialize your dependencies:

class RootDependencyFactory extends DependencyFactory<RootDependency> {
  
  Future<RootDependency> create() async {
    return RootDependency(
      apiService: await ApiService.initialize(),
    );
  }
}

Step 3: Use DependencyScope

Wrap your app in a DependencyScope to provide dependencies:

void main() {
  runApp(
    DependencyScope<RootDependency, RootDependencyFactory>(
      dependency: RootDependencyFactory(),
      placeholder: const Center(child: CircularProgressIndicator()),
      builder: (BuildContext context) => const MyApp(),
    ),
  );
}

Step 4: Access the Dependency in a Widget

You can now access the dependency using DependencyProvider anywhere in the widget tree:

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final apiService = DependencyProvider.of<RootDependency>(context).apiService;

    return FutureBuilder(
      future: apiService.getData(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return const CircularProgressIndicator();
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        }

        return Text('Data: ${snapshot.data}');
      },
    );
  }
}

Example 2: DependencyProvider #

final RootDependency dep = await RootFactory().create();

DependencyProvider<RootDependency>(
  dependency: dep,
  builder: () => YourWidget();
  // or
  child: YourWidget()
)

class YourWidget extends StatelessWidget {
  @override
  Widget build(BuildContext) {
    root = DependencyProvider.of<RootDependency>(context);
    ...
  }
}

Example 3: DependencyScope #

DependencyScope<RootDependency, RootFactory>(
      factory: RootFactory(),
      builder: (BuildContext context) => Text('Inject'),
      placeholder: Text('Placeholder'),
      errorBuilder: (Object? error) => Text('Error'),
    ),

Migration Guide #

link to migrate versions

Code Coverage #

Codecov

5
likes
0
points
108
downloads

Publisher

verified publishercontributors.info

Weekly Downloads

depend simplifies dependency management in Flutter apps, providing easy initialization and access to services across the widget tree.

Homepage
Repository (GitHub)
View/report issues

Topics

#dependency #injection #dependency-injection #service #dependency-management

License

unknown (license)

Dependencies

flutter

More

Packages that depend on depend