usecase_interface 1.0.0
usecase_interface: ^1.0.0 copied to clipboard
A simple library that introduces a UseCase interface for clean architecture patterns.
usecase_interface #
A simple library that introduces a UseCase interface for clean architecture patterns.
Features #
UseCase<Input, Output>— for asynchronous use casesUseCaseSync<Input, Output>— for synchronous use cases- Minimal API with no dependencies
Installation #
dependencies:
usecase_interface: ^1.0.0
Usage #
Async UseCase with input #
import 'package:usecase_interface/usecase_interface.dart';
class GetUser implements UseCase<GetUserParams, Result<User, Exception>> {
@override
Future<Result<User, Exception>> call(GetUserParams input) async {
// Implementation
}
}
// Usage (callable syntax)
final result = await getUser(GetUserParams(id: '123'));
Async UseCase without input #
class GetCurrentUser implements UseCase<void, Result<User, Exception>> {
@override
Future<Result<User, Exception>> call(void input) async {
// Implementation
}
}
// Usage (pass null for void input)
final result = await getCurrentUser(null);
Sync UseCase #
class ValidateEmail implements UseCaseSync<String, Result<bool, Exception>> {
@override
Result<bool, Exception> call(String input) {
// Implementation
}
}
// Usage (callable syntax)
final result = validateEmail('test@example.com');
Recommended: Use Result type #
It is recommended to use a Result type (e.g. from result_dart package) as the Output to handle success and failure cases explicitly.