为什么即使在输入 await 关键字后我的应用程序仍会显示 0?

Why even after putting await keyword my app will show 0?

我已经在 initState 中调用了触发函数 function.In 触发函数我将从 API 中获取数据并使用 storeddata.fromjson 函数解析数据。然后我会将这些值存储在变量中。据我所知,一旦创建了这个有状态小部件的对象,就会调用 initState 函数。但仍然在应用程序中,它会在几秒钟内将 exchangeval_bitcoin 显示为 0,然后它会更新(我已将 exchangeval_bitcoin 初始化为 0)。这是否意味着即使在放置 await 关键字之后,即使在 initState 函数完成之前也会调用构建函数?在更新该值之前,我如何实现加载屏幕?

void triggerfun() async {
var decodedmap;
Jsonparse p = Jsonparse(url: uri);
decodedmap = await p.cryptocovert();
Storeddata s = Storeddata.fromjson(decodedmap);
setState(() {
  exchangeval_bitcoin = s.getdataforbitcoin();
  exchangeval_etherium = s.getdataforetherium();
  exchangeval_litecoin = s.getdataforlitecoin();
});
permanent = s;
}

//calling initstate
@override
void initState() {
super.initState();
triggerfun();
}

提前致谢。

triggerfun() 是一个异步函数。因此,在您的 initState() 中,它将调用 triggerfun(),但仍会继续您的程序的其余部分。触发器函数完成后,它将设置状态并重建小部件。

await 关键字将停止程序直到该行完成,但 triggerfun() 作为一个整体仍然是异步的。