The Result Pattern
package for Dart provides a robust way of handling operations that may succeed or fail.
By encapsulating the result of an operation in a Result
object, this package allows developers to write code that is
more predictable, safer, easier to understand and maintain.
- Improved error handling: Encapsulates success and failure results in a single, predictable type. predictable type.
- Cleaner code: Reduces the need for try-catch blocks, making the code base cleaner and more readable.
- Composable: Makes it easy to chain several operations together and manage their results in a unified way.
Add result_pattern
to your pubspec.yaml
file:
dart pub add result_pattern
import 'package:result_pattern/result_pattern.dart';
void main() {
final result = Result.ok(42);
expect(result.unwrap(), 42);
final value = switch (result) {
Ok(:final value) => value,
Err(:final error) => throw error,
};
expect(value, 42);
}
import 'package:result_pattern/result_pattern.dart';
AsyncResult<int, Exception> getOkResult() => Result.ok(42);
Future<void> main() async {
expect(await future.unwrap(), 42);
// Use pattern matching to extract the value or throw an error
final value = switch (await future) {
Ok(:final value) => value,
Err(:final error) => throw error,
};
// Use the match method to handle error cases
final value = await getOkResult()
.expect('Error message');
expect(value, 42);
}
Contributions are welcome! Feel free to submit a pull request or open an issue if you have suggestions or find bugs.
This package is licensed under the MIT license. See the LICENSE file for more details.