flutter - 我可以在 FutureBuilder 中使用 Either 吗?
问题描述
我使用 Either 通过 REST API 获取数据,如下所示:
Future<Either<ResponseError, List<ResponseApi>>> getApi() async {
...
if (ERROR) {
return Left(ERROR);
else {
return Right(RESPONSE);
}
然后我想获取如下数据:
FutureBuilder _getPhonebooks() {
return FutureBuilder<Either<ResponseError, List<ResponsePhonebook>>>(
future: RequestGetPhonebook().getPhonebooks(),
builder: (
BuildContext context, AsyncSnapshot<Either<ResponseError, List<ResponsePhonebook>>> snapshot) {
if (snapshot.hasData) {
return _cerateData(snapshot.data);
}
else {
...
}
然后我在 _createData() 中进行如下操作:
Widget _cerateData(Either<ResponseError, List<ResponseApi>> data) {
return data.fold((l) {
return Text(l.error + '\n' + l.errorDescription);
}, (r) {
return ListView.builder(
itemCount: r.length,
itemBuilder: (context, index) {
return _tile(r[index].lastName + r[index].firstName, r[index].reading, Icons.work);
});
});
}
解决方案
推荐阅读
- qt - 其中定义了'index'属性,因为Repeater用于实例化一个项目数组,每个项目都可以访问索引
- angular - Angular:使用“trackBy:index”的好习惯吗?
- ios - 如何在 iOS12 上进行 SOS 集成
- c++ - 为什么为位字段分配值不返回相同的值?
- winforms - VB.net 2017 - 表单中 2 个或更多数据视图的大小
- node.js - Mongoose - 尝试更新 MongoDB 中的对象,出现错误:“object.save 不是函数”
- android - 单选组中的单选按钮大小不正确
- consul - 通过 Consul 运行 Istio 的 bookInfo 示例时出错
- python-3.x - Python 网页抓取 - 为什么总是获取主页源代码?
- swift - RxSwift + canMoveRowAt