如何解决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) => ??);
}
);
}
问题
- 不确定我编写代码的方式是否正确。有什么想法吗?
- 知道如何将照片 (Uint8List) 分配给现有列表作为程序是 不可变?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。