resource_result 1.0.1 copy "resource_result: ^1.0.1" to clipboard
resource_result: ^1.0.1 copied to clipboard

A package that provides a Resource class of any type. Supports the states Success, Failure and Loading.

example/example.dart

import 'package:resource_result/resource_result.dart';

main() {
  final Resource<int> result = parseInt("13");
  if (result.hasData) {
    Text("Parsed int successfully: ${result.tryGetData}");
  } else {
    Text("Failed to parse int: ${result.tryGetMessage}");
  }
  //or
  convert(someStream).listen((resource) {
    resource.resolve(
        onSuccess: (someClassData) => Text(
            "Converted someClass to otherClass instance successfully: $someClassData"),
        onLoading: (_) => Text("Loading..."),
        onFailure: (error) => Text("Failed to convert: $error"));
  });
}

void Text(String text) {}

class ParsingFailure extends Failure<int> {
  ParsingFailure(String? message) : super(message);
}

Resource<int> parseInt(String value) {
  try {
    return Success(int.parse(value));
  } catch (e) {
    return ParsingFailure("Failed to parse value '$value'");
  }
}

const Stream<SomeClass> someStream = Stream.empty();

class SomeClass {}

class OtherClass {}

class EmptyOtherClass implements OtherClass {}

OtherClass convertToSomeObject(SomeClass someClass) {
  return OtherClass();
}

Stream<Resource<OtherClass>> convert(Stream<SomeClass> toConvert) async* {
  yield Loading(EmptyOtherClass());
  await for (final someObject in toConvert) {
    try {
      final OtherClass converted = convertToSomeObject(someObject);
      yield Success(converted);
    } catch (e) {
      yield Failure("Failed convert '$someObject'");
    }
  }
}

class UserUnauthorizedFailure<U> extends Failure<U> {
  UserUnauthorizedFailure(String? message) : super(message);
}

Failure failureWithMyAppError =
    UserUnauthorizedFailure("User not authorized to access this resource");
1
likes
140
points
55
downloads

Publisher

unverified uploader

Weekly Downloads

A package that provides a Resource class of any type. Supports the states Success, Failure and Loading.

Documentation

API reference

License

MIT (license)

More

Packages that depend on resource_result