我正在根据API调用的结果设置窗口小部件状态,如下所示:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Api().getItems(),
builder: (BuildContext context, snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
} else if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {
setState(() {
items = snapshot.data['items']
.map((item) => Item.fromJson(item))
.toList();
});
// Do things with items..
}
}
);
}
此代码失败,并显示setState() or markNeedsBuild called during build
错误。我想知道这样做的正确方法是什么?
我尝试从状态中删除项目,仅直接访问snapshot.data['items']
,但这具有热重装的不良副作用,不再起作用。