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 类用于以“要么…要么…”的方式返回值,当 ResultOption 不合适时。

会话(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

回到顶部