-
Notifications
You must be signed in to change notification settings - Fork 1
Exposing
Julian Finkler edited this page Apr 15, 2025
·
4 revisions
You can expose the service with another type in the service container. This is useful if you want to depend on an interface instead of an implementation.
abstract class Transport {
void transferData(String data);
}
@Service(exposeAs: Transport)
class ConsoleTransport implements Transport {
@override
void transferData(String data) {}
}
abstract class ChatProvider {
Transport transport;
Future<void> sendChatMessage(String message);
}
@Service(exposeAs: ChatProvider)
class CoolChatProvider implements ChatProvider {
@override
Transport transport;
CoolChatProvider(this.transport);
@override
Future<void> sendChatMessage(String message) {}
}
void main() {
var container = ServiceContainer();
var chatService = container.resolve<ChatProvider>();
print(chatService is CoolChatProvider); // true
print(chatService.transport is ConsoleTransport); // true
}