smart_domain 0.1.0
smart_domain: ^0.1.0 copied to clipboard
Dependency-free Result, Failure, and UseCase primitives for Clean Architecture domain layers.
example/smart_domain_example.dart
import 'package:smart_domain/smart_domain.dart';
final class User {
const User(this.name);
final String name;
}
final class LoadUser extends UseCase<User, int> {
const LoadUser();
@override
Future<Result<User, Failure>> execute(int id) async {
if (id <= 0) {
return const FailureResult(NotFoundFailure(message: 'Invalid user ID'));
}
return const Success(User('Ada'));
}
}
Future<void> main() async {
final result = await const LoadUser()(42);
print(
result.fold(
onSuccess: (user) => user.name,
onFailure: (failure) => failure,
),
);
}