flutter - 使用 Flutter 使用 rest API 列出信息时出错
问题描述
我正在尝试列出屏幕上剩余的 API 中的信息。我有这个方法:
late List<MyModel> _listAll; // original list fetched from API
late List<MyModel> _displayList;
.
.
void _ListTransaction() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String token = prefs.getString("userToken") ?? "";
dynamic data = await http.get(Uri.parse('....'), headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '$token',
});
List<MyModel> listAll= [];
for (var u in data) {
MyModel myModel = MyModel.fromJson(u);
print(myModel);
listAll.add(myModel);
}
setState(() {
_listAll = listAll;
_displayList = _listAll ;
});
}
在这里我得到错误:
_TypeError(类型“_InternalLinkedHashMap<String, dynamic>”不是“Iterable”类型的子类型)
我也尝试过这种方法:
void _ListTransaction() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String token = prefs.getString("userToken") ?? "";
dynamic data = await http.get(Uri.parse('....'), headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': '$token',
});
var list = json.decode(data.body);
print(list);
setState(() {
_listAll = list;
_displayedList = _petrolList;
});
}
但在这里我得到了错误:
_TypeError(类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型 'List' 的子类型)
你们可以帮我解决这个错误。我很感激任何评论!
更新 我也使用了这种方法,但无济于事!
这是我的 json.decode(data.body); 的结构
我的模型:
class TransactionModel {
int? month;
int? year;
double? balanceFull;
double? balanceMonth;
ExpenseModel? expenseModel;
RevenueModel? revenueModel;
TransactionModel();
Transactions() {
month = 00;
year = 0000;
balanceFull = 0;
balanceMonth = 0;
}
TransactionModel.fromJson(Map<String, dynamic> json) {
month = json['month'];
year = json['year'];
balanceFull = json['balanceFull'];
balanceMonth = json['balanceMonth'];
expenseModel = json['expenseModel'];
revenueModel = json['revenueModel'];
}
解决方案
我认为错误在于_listAll是MyModel的类型列表,但是“setState”方法中的列表是Map<String, dynamic> 。
我希望能帮助你。
推荐阅读
- python - 仅使用内置功能的具有正确数据类型的 YAML 到 Python 字典
- cmake - 使用 CMake 传递 LLVM 的编译器选项依赖项
- ios - 使用 SwiftUI 在 CoreData 中处理 Header / Detail 视图的正确方法
- html - 如何使包含跨度和不间断空格的标题包裹整个单词
- excel - excel VBA 代码中的自动化错误或错误 462
- typescript - Airtable Typescript - 从DefinitelyTyped 库中导入类型
- java - Thymeleaf 从请求或会话中获取当前语言环境
- python - 枕头,文本居中不起作用,这是如何完成的?
- go - 使用阅读器从 []byte 读取结构时出错
- django - BootstrapError:参数“form”应包含有效的 Django 表单