gpt4 book ai didi

flutter - 状态更改时如何强制立即重绘 FutureBuilder?

转载 作者:IT王子 更新时间:2023-10-29 06:50:05 25 4
gpt4 key购买 nike

当我更改特定 futurebuilder 小部件所依赖的状态时,在异步任务完成之前不会重新绘制小部件。我希望在状态改变后立即重绘小部件。下面是 futurebuilder 的代码:

child: new FutureBuilder(
future: _api.getListOfTourneys(searchTerm, filterChecks, pageNum),
builder: (context, snapshot) {
if (snapshot.hasData) {
if(!(snapshot.data is List)){
return new TourneyItem(snapshot.data['tournament']);
}
return new Expanded(
child: ListView.builder(
shrinkWrap: false,
scrollDirection: Axis.vertical,
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return TourneyItem(snapshot.data[index]);
},
));
} else if (snapshot.hasError) {
return new Text("No results found");
} else {
return new CircularProgressIndicator();
}
},
)

最佳答案

我认为 FutureBuilder 只在开始时构建一次,然后每次执行异步任务时构建。因此,当我们导航到屏幕时,FutureBuilder 在开始时构建,然后在异步任务完成时构建,然后对于其他调用(除了第一个)FutureBuilder 仅在异步任务完成后构建。

我还需要在异步调用开始时重建 FutureBuilder,我使用 snapshot.connectionState 解决了这个问题

FutureBuilder 的内部构建者

if(snapshot.connectionState == ConnectionState.done){
if(snapshot.hasData){
//Show data here
}else{
//Show error here
}
}else{
//Show progress
}

关于flutter - 状态更改时如何强制立即重绘 FutureBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50980377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com