Files
Vincent Bourdon 02a121703f feat(j0.3): socle transverse (Result/Failure, theme, router, DI)
- core/error : Result<S> maison (Ok/Err) + Failure scellee avec egalite de valeur
- core/theme : AppTheme Material 3 (palette coucher, cibles tactiles enfant)
- core/router : routes nommees child/parentGate/parent (Navigator 1, placeholders)
- core/di : conventions providers
- CLAUDE.md §7 : Result maison & Navigator 1 actes (YAGNI)
- ROADMAP : 0.3 cochee, Jalon 0 termine
- corrections code review : egalite Failure, assertions tests, Map.unmodifiable

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 17:30:45 +02:00

38 lines
1.1 KiB
Dart

/// Types d'échec métier du domaine.
///
/// Les features ajoutent leurs propres sous-types en étendant [Failure].
/// Les exceptions techniques (réseau, IO) sont capturées dans la couche data
/// et converties en [Failure] avant de remonter.
sealed class Failure {
const Failure(this.message);
final String message;
@override
bool operator ==(Object other) =>
other is Failure &&
other.runtimeType == runtimeType &&
other.message == message;
@override
int get hashCode => Object.hash(runtimeType, message);
@override
String toString() => '$runtimeType($message)';
}
/// Erreur de communication réseau (timeout, pas de connectivité, HTTP 5xx…).
final class NetworkFailure extends Failure {
const NetworkFailure(super.message);
}
/// Ressource demandée introuvable (HTTP 404, entité absente en base…).
final class NotFoundFailure extends Failure {
const NotFoundFailure(super.message);
}
/// Erreur inattendue non catégorisée — à affiner si elle se répète.
final class UnexpectedFailure extends Failure {
const UnexpectedFailure(super.message);
}