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
160
points
127
downloads

Publisher

unverified uploader

Weekly Downloads

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

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

MIT (license)

More

Packages that depend on levit_di