berry 0.0.1 copy "berry: ^0.0.1" to clipboard
berry: ^0.0.1 copied to clipboard

Dependency injection container.

example/berry_example.dart

import 'package:berry/berry.dart';

main() {
  new Berry({
    ProfessorService: Provider(
      provide: () => ProfessorService(),
    ),
    'GradeService': Provider(
      provide: () => GradeService(),
    ),
    StudentService: Provider(
      provide: (params) => StudentServiceImpl.fromDi(params),
      resolve: ['GradeService', ProfessorService],
    ),
    'key': Provider(
      provide: () => 'value',
    ),
  });

  StudentService studentService = Berry()[StudentService];

  List<int> studentGrades = studentService.getGrades();

  print(studentGrades);
}

abstract class StudentService {
  List<int> getGrades();
}

class StudentServiceImpl implements StudentService {
  final GradeService gradeService;
  final ProfessorService professorService;

  StudentServiceImpl(this.gradeService, this.professorService);

  List<int> getGrades() {
    return this.gradeService.grades;
  }

  factory StudentServiceImpl.fromDi(Map arguments) {
    return StudentServiceImpl(arguments['GradeService'], arguments[ProfessorService]);
  }
}

class GradeService {
  List<int> grades = [1, 2, 1, 3];
}

class ProfessorService {}
0
likes
30
pub points
0%
popularity

Publisher

unverified uploader

Dependency injection container.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

graphs

More

Packages that depend on berry