import '../errors/failure.dart'; sealed class Result { const Result(); bool get isSuccess => this is Success; bool get isError => this is Error; R fold({ required R Function(T data) onSuccess, required R Function(Failure failure) onError, }) { final current = this; return switch (current) { Success(:final data) => onSuccess(data), Error(:final failure) => onError(failure), }; } } class Success extends Result { const Success(this.data); final T data; } class Error extends Result { const Error(this.failure); final Failure failure; }