levit_di 0.0.3 copy "levit_di: ^0.0.3" to clipboard
levit_di: ^0.0.3 copied to clipboard

Pure Dart dependency injection and service locator. Part of the Levit framework.

example/levit_di_example.dart

import 'package:levit_di/levit_di.dart';

// A simple service
class DatabaseService extends LevitDisposable {
  bool connected = false;

  @override
  void onInit() {
    print('DatabaseService: Initializing...');
    connected = true;
  }

  @override
  void onClose() {
    print('DatabaseService: Closing...');
    connected = false;
  }

  void query(String sql) {
    if (!connected) throw Exception('Database not connected');
    print('DatabaseService: Executing "$sql"');
  }
}

// A dependent service
class UserRepository {
  // Dependencies are resolved seamlessly
  final db = Levit.find<DatabaseService>();

  void findUser(int id) {
    db.query('SELECT * FROM users WHERE id = $id');
  }
}

void main() {
  // 1. Register dependencies
  print('--- Registering ---');
  Levit.put(DatabaseService());
  Levit.lazyPut(() => UserRepository());

  // 2. Use dependencies
  print('\n--- Resolving ---');
  final repo = Levit.find<UserRepository>();
  repo.findUser(42);

  // 3. Clean up
  print('\n--- Cleaning up ---');
  Levit.reset(); // Disposes DatabaseService

  try {
    repo.findUser(42);
  } catch (e) {
    print('Error: $e');
  }
}
1
likes
150
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Pure Dart dependency injection and service locator. Part of the Levit framework.

License

MIT (license)

More

Packages that depend on levit_di