lite_ref 0.1.0 copy "lite_ref: ^0.1.0" to clipboard
lite_ref: ^0.1.0 copied to clipboard

A lightweight dependency injection package with support for overriding for testing.

example/main.dart

// ignore_for_file: avoid_print

import 'package:lite_ref/lite_ref.dart';

class Database {
  Database(this.connectionString);

  final Map<String, dynamic> _cache = {};
  final String connectionString;

  Future<void> save(String key, dynamic value) async {
    return _cache[key] = value;
  }

  Future<dynamic> get(String key) async {
    return _cache[key];
  }
}

class UserService {
  UserService({required this.database});

  final Database database;

  Future<void> saveUser(String name) async {
    return database.save('user', name);
  }

  Future<String> getUser() async {
    return database.get('user') as String;
  }
}

void main() async {
// create a singleton
  final dbRef = LiteRef(create: () => Database('example-connection-string'));

  final db = dbRef.instance;

// create a transient (always new instance) by setting cache to false
  final userServiceRef = LiteRef(
    create: () => UserService(database: db),
    cache: false,
  );

  final userService = userServiceRef.instance;

  await userService.saveUser('John Doe');

  final user = await userService.getUser();

  print(user); // John Doe
}
19
likes
0
pub points
75%
popularity

Publisher

verified publishernosy.dev

A lightweight dependency injection package with support for overriding for testing.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

meta

More

Packages that depend on lite_ref