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
- Success => data
- Failure => default data
result.getOrDefault(defaultData);
Get data from Result if any or throw exception
- Success => data
- 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
- Success => data
- Failure => default data
waitTask().getOrDefault(defaultData);
Note: shorthand for waitTask().then((value)=> value.getOrDefault(defaultData));
Get data from Result if any or throw exception
- Success => data
- 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) {
// ...
});
}