Flutter Dartz - 第二个 API 依赖于第一个 API - 我该怎么做?

问题描述

我需要一些帮助。我从本教程 https://resocoder.com/2019/12/14/functional-error-handling-in-flutter-dart-2-either-task-fp/ 中学习了 Dartz 库,并且单个 API 调用似乎有效。

但是我有这个场景

一个 API - https://ip/v1/programs - 此 API 将返回所有程序

然后,为了获取程序的照片,我需要调用一个 API 并执行 for 循环。

第二个 API - https://ip/v1/programs/id/photo - id 从第一个 API 传递,照片以二进制字节表示

基本上我需要在调用一个 API 后调用第二个 API。 然后从第一个 API 返回的 List 中将照片分配到每个程序中。

注意:program.dart(使用冻结包)并且它是不可变的。有身份证、照片等字段。

我的代码

Either<NetworkExceptions,List<Program>> _result;
  Either<NetworkExceptions,List<Program>> get result => _result;
  void _setResult(Either<NetworkExceptions,List<Program>> result) {
    _result = result;
  }

Future<void> getPrograms() async {
await Task(() => _service.getPrograms(token))
.attempt()
.mapLeftToFailure()
.run()
.then((value) => _setResult(value));

result.fold(
(failure) => {}
(programs) async {
// call 2nd API here ???
}
);

Future<List<Program>> getProgramPhoto(Token token,List<Program> old) async {
List<Program> newProgram;

old.forEach(
(program) async {
 await Task(() => _service.getProgramPhoto(token,program.id))
.attempt()
.mapLeftToFailure()
.run()
.then((value) => ??);
}
);
}

问题

  1. 不确定我编写代码的方式是否正确。有什么想法吗?
  2. 知道如何将照片 (Uint8List) 分配给现有列表作为程序是 不可变?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)