У меня есть этот фрагмент кода Флаттера.
class SongItem extends StatelessWidget {
final String _songName;
final String _songNumber;
// This need to be initialized in the readJSONFile() function.
String _songLyrics;
SongItem(
this._songNumber,
this._songName
);
void readJSONFile(String songName) async {
String song = await rootBundle.loadString(songName);
_songLyrics = song;
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
// The async function called here.
readJSONFile(_songName);
Navigator.push( /* some code here */ );
},
child: Container( /* some code here */ ),
);
}
}
При запуске этого кода _songLyrics
становится нулевым. Я знаю, что это связано с тем, что readJSONFile () является асинхронным. В этом случае, как я могу заставить вызов функции readJSONFile () ждать, пока _songLyrics
не будет инициализирован?