阻止某些项刷新Listview.builder中的数据



我在FutureBuilder中有一个Listview.builder,它从http请求中获取一些数据。我有一个bool closed,如果状态为bool is true,我想阻止一些项目刷新

我该怎么做

您可以通过在initState中进行调用来实现这一点。通过这种方式,您可以确保它只获取一次数据。

示例:

class FutureSample extends StatefulWidget {
// Create instance variable
@override
_FutureSampleState createState() => _FutureSampleState();
}
class _FutureSampleState extends State<FutureSample> {
Future myFuture;
Future<String> _fetchData() async {
await Future.delayed(Duration(seconds: 10));
return 'DATA';
}
@override
void initState() {
// assign this variable your Future
myFuture = _fetchData();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: FutureBuilder(
future: myFuture,
builder: (ctx, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data.toString());
}
return CircularProgressIndicator();
},
),
),
);
}
}

这样你就不需要布尔值了。还有不同的方法可以实现或扩展您的请求。你可以查看这篇文章了解更多信息:https://medium.com/flutterworld/why-future-builder-called-multiple-times-9efeeaf38ba2

最新更新