02a121703f
- 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>
38 lines
1.1 KiB
Dart
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);
|
|
}
|