result_or 0.8.4
result_or: ^0.8.4 copied to clipboard
Easy error handling implementation based on ResultOrError/Either idea.
example/lib/main.dart
import 'package:result_or/result_or.dart';
import 'functions.dart';
void main() async {
/// With ResultOr simply call your functions in bloc/store/etc, or anywhere else, wrapped in ResultOr.
/// Get result data or error.
var result = ResultOr.from(someFunction);
// var result = someFunction.resultOr();
if (result case ResultData()) {
print(result.data);
} else if (result case ResultError()) {
print(result.error.message);
}
// Callback function example
ResultOr.from(someFunction,
onSuccess: (data) {
print(data);
},
onError: (error) {
print(error.message);
}
);
// Future function example + switch/case
var result2 = await ResultOr.fromFuture(someFutureFunction);
switch (result2) {
case ResultData():
print(result2.data);
case ResultError():
print(result2.error.message);
}
// Parametrized function example
var result3 = ResultOr.from(() => someFunctionWithParam(2));
if (result3 case ResultData()) {
print(result3.data);
} else if (result3 case ResultError()) {
print(result3.error.message);
}
// Parametrized future function example
var result4 = await ResultOr.fromFuture(() => someFutureFunctionWithParam("Param"));
if (result4 case ResultData()) {
print(result4.data);
} else if (result4 case ResultError()) {
print(result4.error.message);
}
// Using extensions
someFunction.resultOr(
onSuccess: (data) {
print(data);
},
onError: (error) {
print(error.message);
}
);
// Using extensions and async without callbacks
var result5 = await someFutureFunction.resultOr();
if (result5 case ResultData()) {
print(result5.data);
} else if (result5 case ResultError()) {
print(result5.error.message);
}
// Using extensions and async with params
var result6 = await (() => someFutureFunctionWithParam("param")).resultOr();
if (result6 case ResultData()) {
print(result6.data);
} else if (result6 case ResultError()) {
print(result6.error.message);
}
}