- 此问题在此处已有答案**:
What is a Future and how do I use it?(5个答案)
12小时前关门了。
如何确保在异步函数调用后有一个可用的状态变量?我认为因为getValues()
是异步的,所以它应该"等待"直到移动到下一行。因此,getValues()
不应退出,并且在对setState
的调用完成之前不应调用configValue()
。但是,我看到values
在我的Widget中是一个空数组。
late List values = [];
@override
void initState() {
super.initState();
getValues();
configValue();
}
getValues() async {
final String response = await rootBundle.loadString('assets/values.json');
final vals = await json.decode(response)['values'];
setState(() {
values = vals;
});
}
void configValue() {
// How to make sure I have values[0] here?
}
先谢了!
3条答案
按热度按时间gudnpqoy1#
您可以将
getValues
更改为:然后创建另一个中间函数,如下所示:
在
initState
中这样调用它:也将您的
configValue
更改为:在这里,
configValue
和getValues
彼此分离,并且configValue
将等待getValues
结果。n9vozmp42#
你需要使用
await
之前的方法来完成未来.也可以使用.then
.q0qdq0h23#
请尝试以下代码: