fluent_result 4.1.0 copy "fluent_result: ^4.1.0" to clipboard
fluent_result: ^4.1.0 copied to clipboard

outdated

Result is an object indicating success or failure of an operation.

fluent_result #

pub package codecov likes style: lint Dart

fluent_result is a lightweight Dart library developed to solve a common problem. It returns an object indicating success or failure of an operation instead of throwing/using exceptions.

Usage #

Simple Non-Generic Result #

Result result = Result.success();
Result result = Result.fail(ResultError('a fail reason'));
Result result = Result.withErrorMessage('a fail reason');
Result result = Result.withException(MyException('exception description'));

Generic Result #

ResultOf<MyObject> result = ResultOf.success(MyObject());
MyObject value = result.value;
ResultOf<MyObject> result = ResultOf.fail<MyObject>(ResultError('a fail reason'));
MyObject value = result.value;
Result result = ResultOf.withErrorMessage<MyObject>('a fail reason');
Result result = ResultOf.withException(MyException<MyObject>('exception description'));

Converting Result to another #

To convert one success result to another success result has to be provided a valueConverter

final anotherResult =
    result.toResult(valueConverter: (customer) => User(customer.id));

To convert one fail result to another fail result

final anotherResult = failResult.toResult<Customer>();

Custom errors #

To make your codebase more robust. Create your own error collection of the App by extending ResultError.
ResultError has key property which you can use for localization.


class InvalidPasswordError extends ResultError {
  const InvalidPasswordError(String message)
      : super(message, key: 'InvalidPasswordError');
}

class CustomerNotFound extends ResultError {
  const CustomerNotFound({
    required this.customerId,
  }) : super('Customer not found with ID $customerId');

  final int customerId;

  @override
  String toString() => message;
}

Collect errors #

For example, easy to work with errors which comes from HTTP API.

final err1 = CustomerNotFound(customerId: 1);
final res = Result.fail(err1);

final err2 = InvalidPasswordError('The password 123456 is invalid');
res.add(err2);

res.contains(err2); // true

Contributing #

We accept the following contributions:

  • Improving documentation
  • Reporting issues
  • Fixing bugs

Maintainers #

15
likes
0
pub points
84%
popularity

Publisher

verified publisherdevcraft.ninja

Result is an object indicating success or failure of an operation.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

collection, quiver

More

Packages that depend on fluent_result