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

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<InvalidPasswordError>(); // true
res.get<InvalidPasswordError>().should.not.beNull();

Contributing #

We accept the following contributions:

  • Improving documentation
  • Reporting issues
  • Fixing bugs

Maintainers #

16
likes
140
points
146
downloads

Publisher

verified publisherdevcraft.ninja

Weekly Downloads

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

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

collection, quiver

More

Packages that depend on fluent_result