Flutter插件appydart的简介与使用方法
Flutter插件appydart的简介与使用方法
AppyDart 是一个开源库,其中包含用于实现基于干净架构的代码库的组件。尽管任何人都可以使用该库,但它主要针对 Appiness 的编程习惯进行优化。
库的主要目的是在不抛出异常的情况下延长结果和错误。这符合干净架构的原则。
版权与许可
版权 © 2022 UAB “Appiness”。
许可证如下:
您不得在未遵守许可证的情况下使用此文件。
您可以在此处获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或以书面形式同意,否则根据许可证分发的软件
以“原样”为基础分发,没有任何明示或暗示的保证或条件。
有关许可证具体语言和限制的详细信息,请参阅许可证。
状态
该库正在积极开发中,不建议在生产环境中使用。API 变更可能会频繁发生,直到版本达到 1.0.0。
功能
结果(Result)
结果包旨在传递结果而不是使用 try/catch 块。
Error
类用于错误通信,当抛出错误不是一个选项时。Result
类用于返回可能为成功或失败的结果。Option
类用于返回无值或某些值。Either
类用于以“要么…要么…”的方式返回值,当Result
或Option
不合适时。
会话(Session)
会话包是一个简单的对象,用于会话管理。
令牌(Token)
令牌包提供了创建会话令牌的功能,包括 JWT 令牌。
用例(UseCase)
用例包为干净架构的用例提供了一个基础。
开始使用
该库适用于 Dart 和 Flutter。导入库即可开始使用。
使用示例
更多示例将在不久后提供。
错误和结果(Error and Result)
结果和错误的延长可以在 Rust 或 Go 风格下完成。以下示例展示了这两种风格,并定义了错误和自定义错误。
该包对使用的风格是中立的。每个项目或开发团队应单独决定使用哪种风格。
import 'package:appydart/result/error.dart';
// 默认错误基于字符串。
const exampleErr = Error('this is an error');
// 自定义错误提供更多灵活性。
class ValidationError implements BaseError {
final String field;
final String value;
final String msg;
ValidationError(
{required this.field, required this.value, required this.msg});
@override
String error() => 'field $field with value $value: $msg';
}
void main() {
// 处理错误
// 定义一个自定义验证错误。
final err =
ValidationError(field: 'email', value: 'test', msg: 'invalid email');
// 所有类型的错误都可以通过 `isError` 函数检测为错误。
print('isError(exampleErr): ${isError(exampleErr)}');
print('isError(err): ${isError(err)}');
// `isErrorType` 可用于更具体的错误检测。
print(
'isErrorType<ValidationError>(err): ${isErrorType<ValidationError>(err)}');
// 处理结果
// 定义一个成功的结果
final a = Result.ok('This is a success');
// 定义一个错误结果,可以使用所有类型的错误,包括我们的自定义验证错误。
final b = Result.error(exampleErr);
final c = Result.error(err);
// 通过 switch 语句处理结果(Rust 风格)
switch (a.state) {
case ResultState.ok:
// 执行一些操作
break;
case ResultState.error:
// 处理错误
break;
}
// 通过错误检查处理结果。
if (b.isError()) print('An error occurred at b: ${b.error}');
if (c.isErrorAnd((err) => isErrorType<ValidationError>(err))) {
print('validation went wrong at c');
}
// 检查成功的结果。
if (a.isOk()) print('a succeeded: ${a.value}');
}
成功路径(Go 风格)
import 'dart:io';
import 'package:appydart/result/result.dart';
Result<int> add(int v, int a) {
final r = v + a;
if (r < 0) return Result.error(Error('result cannot be negative'));
return Result.ok(r);
}
void main() {
final r1 = add(5, 5);
if (r1.isError()) {
print('5 + 5 failed: ${r1.error.error()}');
exit(1);
}
print('5 + 5 = ${r1.value}');
final r2 = add(5, -10);
if (r2.isError()) {
print('5 + -10 failed: ${r2.error.error()}');
exit(1);
}
print('5 + -10 = ${r2.value}');
}
更多关于Flutter插件appydart的简介与使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html