根据API响应设置状态

时间:2020-02-19 07:38:08

标签: flutter dart

我正在根据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'],但这具有热重装的不良副作用,不再起作用。

0 个答案:

没有答案