Karee Inject

Library used to help developers to better manage dependency injection during flutter development.

Usage

Karee Inject provide an amazing collection of annotation like Service for services, Value for reading value from application config file, Autowired to auto initialize classe and Persistable A simple usage example:

Use of @Persistable with data model

import 'package:karee_inject/karee_inject.dart';

@Persistable
class User {

  double id;
  String name;

  User(this.id, this.name);

}

Use of Service to define a service, Autowired and Value to inject application configuration and other services.

@Service
class ServiceUser {

  @Value('@{application.server.base-url}')
  late final String baseUrl;

  @Autowired
  late final DatabaseInterface db;

  User? getUserById(double id){

    return db
      .find(User.runtimeType)
      .where('id', isEqualTo: id);
      
  }
}

Use of Controller to define a Controller, and Autowired to inject Services property;

@Controller
class UserController {

  @Autowired
  late final UserService userService;

  void showUserDetailView(double id){

    User? user = userService.getUserById();
    
    if(user == null){
      screen(UserNotFoundScreen(), RouteMode.PUSH);
      return;
    }

    screen(UserDetailScreen(user: user), RouteMode.PUSH);  
  }
}

Test

# Generate additional source first
flutter packages pub run build_runner build --delete-conflicting-outputs

# Then run test
flutter test

Libraries

karee_inject
Karee.annotations