injectable icon indicating copy to clipboard operation
injectable copied to clipboard

[feature request] add annotation for service initialization

Open leoshusar opened this issue 2 years ago • 1 comments

I would love to have an annotation similar to @PostConstruct in Java Spring.

My use case are services with initialization method, such as service which needs to load settings from internet. It would look like this:

@Singleton(as: MyService)
class MyServiceImpl implements MyService {
  final RemoteService _remoteService;
  late final String _someData;

  const MyServiceImpl(this._remoteService);

  @postConstruct
  Future<void> initialize() async {
    _someData = await _remoteService.getData();
  }
}

My request is similar to #284, but I think this would be much better than creating service using static method like this:

@Singleton(as: MyService)
class MyServiceImpl implements MyService {
  final RemoteService _remoteService;
  late final String _someData;

  const MyServiceImpl(this._remoteService);

  @preResolve
  @factoryMethod
  static Future<MyService> create(RemoteService remoteService) async {
    final service = MyServiceImpl(remoteService);
    service._someData = await _remoteService.getData();
    return service;
  }
}

leoshusar avatar May 22 '22 16:05 leoshusar

+1

naamapps avatar Oct 21 '22 19:10 naamapps