res 1.3.0 copy "res: ^1.3.0" to clipboard
res: ^1.3.0 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);
}
1
likes
140
pub points
65%
popularity

Publisher

verified publishermuha.dev

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

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (LICENSE)

Dependencies

meta

More

Packages that depend on res