success 1.0.0 copy "success: ^1.0.0" to clipboard
success: ^1.0.0 copied to clipboard

Deal with success or failure in the simplest way.

Success

Deal with success or failure in the simplest way.

About #

This simple package presents a way to easily handle a success or failed result, which could be, for example, the result of an API request.

How to #

This package contains only 3 classes, Result and its subtypes - Success and Failure. You can use these classes in your code to handle errors without having to do a try catch whenever possible.

Usage #

enum RequestErrorCode {
  noInternet,
  sessionExpired,
  unexpectedError,
}

Result<Response, RequestErrorCode> getUsername() {
  try {
    final response = api.getUsername();
  } on ApiError catch (err) {
    if (err.connectionInterrupted) {
      return Result.failure(RequestErrorCode.noInternet);
    } else if (err.statusCode == 401) {
      return Result.failure(RequestErrorCode.sessionExpired);
    } else {
      return Result.failure(RequestErrorCode.unexpectedError);
    }
  } on Exception {
    return Result.failure(RequestErrorCode.unexpectedError);
  }
}

void main() {
  final result = getUsername();

  switch (result) {
    case Success(value: final username):
      print('My username is: "$username".');
      break;
    case Failure(value: RequestErrorCode.noInternet):
      print('Internet connection is not available.');
      break;
    case Failure(value: RequestErrorCode.sessionExpired):
      print('Session has expired.');
      break;
    case Failure():
      print('Unexpected error while getting the username.');
      break;
  }
}
1
likes
130
points
57
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Deal with success or failure in the simplest way.

Repository (GitHub)

License

MIT (license)

More

Packages that depend on success