go router added

This commit is contained in:
amirrezaghabeli
2025-08-05 08:23:05 +03:30
parent d5984b8bbf
commit 676124567f
14 changed files with 887 additions and 108 deletions
+70
View File
@@ -0,0 +1,70 @@
typedef OnError<E> = void Function(E error);
abstract class Either<E, S> {
const Either();
E? getError();
S? getSuccess();
bool isError();
bool isSuccess();
void when({
required OnError<E> error,
required void Function(S success) success,
});
}
class Success<E, S> extends Either<E, S> {
final S _success;
const Success(this._success);
@override
E? getError() => null;
@override
S? getSuccess() => _success;
@override
bool isError() => false;
@override
bool isSuccess() => true;
@override
void when({
required OnError<E> error,
required void Function(S success) success,
}) {
success(_success);
}
}
class Error<E, S> extends Either<E, S> {
final E _error;
const Error(this._error);
@override
E? getError() => _error;
@override
S? getSuccess() => null;
@override
bool isError() => true;
@override
bool isSuccess() => false;
@override
void when({
required OnError<E> error,
required void Function(S success) success,
}) {
error(_error);
}
}