🚀 Get Started
🔄 Migration Guide

Migration Guide

Migrate from the old binds() list to the new binds(Injector i) function.

What Changed?

The bind registration system changed from returning a list to using a function with an injector.

Before vs After

❌ Old Way

class MyModule extends Module {
  @override
  FutureOr<List<Bind<Object>>> binds() => [
    Bind.singleton<ApiService>((i) => ApiService()),
    Bind.singleton<DatabaseService>((i) => DatabaseService()),
  ];
}

✅ New Way

class MyModule extends Module {
  @override
 FutureBinds binds(Injector i) {
    i.addSingleton<DatabaseService>((i) => DatabaseService());
  }
}

Migration Steps

1. Change Method Signature

// Old
@override
FutureOr<List<Bind<Object>>> binds() => [
  Bind.singleton<MyService>((i) => MyService()),
];
 
// New
@override
FutureBinds (Injector i) {
  i.addSingleton<MyService>((i)=> MyService());
}

2. Update Registration Syntax

// Old
Bind.singleton<ApiService>((i) => ApiService())
 
 
i.addSingleton<ApiService>((i) => ApiService())

3. Use Keys When Needed

@override
FutureBinds (Injector i) {
  i.addSingleton<ApiService>((i) => ApiService(), key: 'main');
  i.addSingleton<ApiService>((i) => ApiService(), key: 'backup');
}

Benefits

  • Cleaner syntax - No more Bind wrapper
  • Better performance - Direct registration
  • Easier to read - More intuitive API
  • Same functionality - All features preserved

Complete Example

class MyModule extends Module {
  @override
 FutureBinds binds(Injector i) {
    i.addSingleton<ApiService>((i) => ApiService(), key: 'main');
    i.addSingleton<DatabaseService>((i) => DatabaseService(api: i.get<ApiService>(key: 'main')));
    i.add<CacheService>((i) => CacheService());
  }
 
  @override
  List<ModularRoute> get routes => [
    ChildRoute('/', child: (_, __) => MyPage()),
  ];
}
 
class MyPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final apiService = context.read<ApiService>(key: 'main');
    final dbService = context.read<DatabaseService>();
    
    return Scaffold(
      body: Text('Services loaded successfully!'),
    );
  }
}

That's it! Your migration is complete.