有没有办法从FutureBuilder中提取数据?

时间:2020-06-27 18:11:08

标签: flutter

由于您只能在FutureBuilder中返回小部件,所以我想知道是否有一种方法可以从这些小部件中提取数据以对其进行修改?

例如,是否有办法在此处访问“ snapshot.data.value”?

if (snapshot.hasData) {
  return Text("${snapshot.data.value}");
} else if (snapshot.hasError) {
  return Text("${snapshot.error}");
}

这是我的父窗口小部件,我试图从中获取snapshot.data.value

                  Container(
                    child: FirstWidget(),
                  ),
                  Container(
                    child: SecondWidget(),
                  ),

这是我的子小部件,它会在FutureBuilder之后返回:

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<Api>(
      future: _apivalue,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          Test(er: snapshot.data.er);
          return Text("${snapshot.data.value}");
        } else if (snapshot.hasError) {
          return Text("${snapshot.error}");
        }
        return Text('');
      },
    );
  }
}

1 个答案:

答案 0 :(得分:2)

问题尚不清楚,但是我从您的问题中了解到,您想在小部件外部使用FutureBuilder数据。您可以通过将数据存储在变量中来实现

var data; // Defined inside the state of widget as a local variable

if (snapshot.hasData) {
  data = snapshot.data;
  return Text("${snapshot.data.value}");
} else if (snapshot.hasError) {
  return Text("${snapshot.error}");
}