【发布时间】:2021-12-09 06:20:12
【问题描述】:
所以我有一个有状态的小部件,它有一个我想通过 API 调用更新的 List 变量。我的问题是,即使我在 initState() 中执行了 fetchItems(),List 也是空的。
然后如何使用 fetchItems 函数的内容更新 itemsList? 如果我使用 setState(),该函数是否应该更新 itemsList。
class _ItemsWidgetState extends State<ItemsWidget> {
List<ItemsModel> itemsList = [];
void initState(){
fetchItems();
}
fetchItems() async {
final response = await http.get(url);
if (response.statusCode == 200) {
final fetchedItems = json.decode(response.body);
for (var item in fetchedItems) {
ItemsModel item = ItemsModel.fromJson(item);
setState(() {
itemsList.add(item);
});
}
} else {
throw Exception('Failed to load items');
}
}
【问题讨论】:
-
作为一种优化,只需在
for下方调用一次 setState,这样您就不会每隔几毫秒就对每个反序列化的项目进行重建。 -
对,我可以在函数内创建一个临时列表,但这仍然不能回答我的问题,即为什么 itemsList 在函数调用后没有更新。
标签: flutter dart mobile flutter-listview flutter-state