Flutter 颤振:如何确保从异步函数正确初始化变量?

Flutter 颤振:如何确保从异步函数正确初始化变量?,flutter,asynchronous,Flutter,Asynchronous,我有这段颤振代码 class SongItem扩展了无状态小部件{ 最后一个字符串_songName; 最终字符串_宋编号; //这需要在readJSONFile()函数中初始化。 弦乐歌词; 歌曲项目( 这是你的电话号码, 这是我的名字 ); void readJSONFile(字符串songName)异步{ String song=await rootBundle.loadString(songName); _歌词=歌曲; } @凌驾 小部件构建(构建上下文){ 返回手势检测器( onTap

我有这段颤振代码

class SongItem扩展了无状态小部件{
最后一个字符串_songName;
最终字符串_宋编号;
//这需要在readJSONFile()函数中初始化。
弦乐歌词;
歌曲项目(
这是你的电话号码,
这是我的名字
);
void readJSONFile(字符串songName)异步{
String song=await rootBundle.loadString(songName);
_歌词=歌曲;
}
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
//这里调用的异步函数。
readJSONFile(_songName);
Navigator.push(/*这里有些代码*/);
},
child:Container(/*此处有些代码*/),
);
}
}

运行此代码时,
\u宋词
变为空。我知道这与readJSONFile()是异步的这一事实有关。在这种情况下,如何强制对readJSONFile()函数的调用等待,直到
\u songlyms
初始化?

在onTap函数中使用async和wait

代码如下所示

onTap: ()async {
        // The async function called here.
        await readJSONFile(_songName);

        Navigator.push( /* some code here */ );
      },