-
Notifications
You must be signed in to change notification settings - Fork 0
/
result.dart
38 lines (28 loc) · 826 Bytes
/
result.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Result<T> {
Result._(this.data);
factory Result.success(T? data) = _Success<T>;
factory Result.failure({String? errorMessage, T? data}) = _Failure<T>;
factory Result.loading() = _Loading<T>;
bool get isSuccess => this is _Success<T>;
bool get isLoading => this is _Loading<T>;
bool get isFailure => this is _Failure<T?>;
final T? data;
// Getter method to access the error message
String? get errorMessage {
if (isFailure) {
return (this as _Failure).errorMessage;
}
return null;
}
}
class _Success<T> extends Result<T> {
_Success(super.data) : super._();
}
class _Loading<T> extends Result<T> {
_Loading() : super._(null);
}
class _Failure<T> extends Result<T> {
_Failure({this.errorMessage, T? data}) : super._(data);
@override
final String? errorMessage;
}