res 1.2.1 copy "res: ^1.2.1" to clipboard
res: ^1.2.1 copied to clipboard

Result class that stops errors from throwing by returning either a value or an error

Result class like many other but this one can return void type too, and does not need a "Unit" type

Features #

  • Prevent app crashes

Usage #

Future<int> functionThatCanThrowError() async {
  final n = Random().nextInt(10);

  if (n < 5) {
    throw RangeError(n);
  }

  return n;
}

Future<Result<int, String>> functionThatDoesNotThrow() async {
  try {
    return Result.ok(await functionThatCanThrowError());
  } catch (e, s) {
    return Result.err(e.toString() + s.toString());
  }

  // Or shorter
  return Result.fromFuture(
    functionThatCanThrowError(),
    error: (e, s) => 'Out of Range',
  );
}

void main() async {
  final result = await functionThatDoesNotThrow();

  // Or
  // final result = Result.fromFuture(
  //   functionThatCanThrowError(),
  //   error: (e, s) => '$e $s',
  // );

  if (result.isError) {
    return print('Error');
  }

  return print(result.value);
}
2
likes
0
points
982
downloads

Publisher

verified publishermuha.dev

Weekly Downloads

Result class that stops errors from throwing by returning either a value or an error

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

meta

More

Packages that depend on res