You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
888 B
38 lines
888 B
abstract class RemoteResource<T> {
|
|
RemoteResource._();
|
|
|
|
factory RemoteResource.loading() {
|
|
return LoadingRemoteResource();
|
|
}
|
|
|
|
factory RemoteResource.error(String errorMessage) {
|
|
return ErrorRemoteResource(errorMessage);
|
|
}
|
|
|
|
factory RemoteResource.finished(T value) {
|
|
return FinishedRemoteResource(value);
|
|
}
|
|
|
|
FinishedRemoteResource<T> asFinished() {
|
|
return this as FinishedRemoteResource<T>;
|
|
}
|
|
|
|
ErrorRemoteResource<T> asError() {
|
|
return this as ErrorRemoteResource<T>;
|
|
}
|
|
}
|
|
|
|
class ErrorRemoteResource<T> extends RemoteResource<T> {
|
|
final String errorMessage;
|
|
|
|
ErrorRemoteResource(this.errorMessage) : super._();
|
|
}
|
|
|
|
class LoadingRemoteResource<T> extends RemoteResource<T> {
|
|
LoadingRemoteResource() : super._();
|
|
}
|
|
|
|
class FinishedRemoteResource<T> extends RemoteResource<T> {
|
|
final T value;
|
|
FinishedRemoteResource(this.value) : super._();
|
|
}
|
|
|