gpt4 book ai didi

flutter - 窗口小部件没有更新

转载 作者:行者123 更新时间:2023-12-03 03:24:57 25 4
gpt4 key购买 nike

我有一个名为getData的有状态窗口小部件方法

void getData() async{
var bitCoinPrice1 = (await coinData.getPriceData('BTC$selectedCurrency')).toStringAsFixed(2);
bitCoinPrice = bitCoinPrice1;
}

我在下拉更改事件中调用此方法
  onChanged: (String newValue) {
setState(
() {
selectedCurrency = newValue;
print("Selected currency changed to $selectedCurrency");
getData();
},
);
}

除非我将内容包含在另一个setState()的getData中,否则bitcoinPrice的值不会反射(reflect)在小部件中。我的问题是:如果对getData()的调用已经在setState()内,为什么它需要在getData()内进行另一个setState()调用来更新小部件?

最佳答案

getDataasync,因此setState主体的执行立即终止,从而在传递async结果之前更新状态。
由于setState不允许async主体,因此您必须做不同的事情。

根据您提供的代码,您可以执行以下操作:

onChanged: (String newValue) {
selectedCurrency = newValue;
print("Selected currency changed to $selectedCurrency");
getData();
}

并更新 getData代码,如下所示:
void getData() async{
var bitCoinPrice1 = (await coinData.getPriceData('BTC$selectedCurrency')).toStringAsFixed(2);
setState({
bitCoinPrice = bitCoinPrice1;
});
}

这样,完成 setState的操作后将调用 await

关于flutter - 窗口小部件没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58732952/

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