Developer

Result

This package aims to create an implemetation of Kotlin's and Swift's Result class and own operators. inspired by Dartz Either function.

Installation

dart pub add eit_result --hosted-url=https://gitea.whitelabel.mobile.embedit.dev/api/packages/platform/pub/

!IMPORTANT You need access token for fetching from private pub repository. ELI add token automatically

Usage

To use the Result, add as a dependency in your pubspec.yaml:

dependencies:
  eit_result:
    hosted: https://gitea.whitelabel.mobile.embedit.dev/api/packages/platform/pub/
    version: 1.0.0

Basic syntax

Basic definition

Result<Exception, Model>

Check if ...

you can simply check if result is Success or Failure

// Check if  [Success]
if (result.isSuccess){
    //...
}

// Check if  [Failure]
if (result.isFailure){
    //...
}

Sync Result data

Get data from Result

result.tryResult(
    (exception) => ...,
    (success) => ...
);

Get data from Result if any or get default data

  1. Success => data
  2. Failure => default data
result.getOrDefault(defaultData);

Get data from Result if any or throw exception

  1. Success => data
  2. Failure => throws exception
result.getOrThrow();

Async Result data

Get data from Result

waitTask().run(
    (exception) => ...,
    (success) => ...,
);

Note: shorthand for waitTask().then((value)=> value.tryResult(onFailure, onSuccess));

Get data from Result if any or get default data

  1. Success => data
  2. Failure => default data
waitTask().getOrDefault(defaultData);

Note: shorthand for waitTask().then((value)=> value.getOrDefault(defaultData));

Get data from Result if any or throw exception

  1. Success => data
  2. Failure => throws exception
waitTask().getOrThrow();

Note: shorthand for waitTask().then((value)=> value.getOrThrow());

Samples

// Repository definition
abstract class SampleRepository{
    Future<Result<ApiFailure,Entity>> request(){
        try{
            final result = await api.request();
            return Success(result);
        } catch (e,s){
            return Failure(e);
        }
    }
}


/// Sample usage
Future<void> main() async {
  Result<CustomException, String> result = await Future.value(Success('Success'));
  result.tryResult((exception) {
    // ...
  }, (data) {
    // ...
  });
}

Copyright © 2025. All rights reserved.