У меня есть три примера showDialog.Я предполагаю, что _showAlert1 является правильным, однако он использует 2 функции для достижения этой цели._showAlert2 также работает, однако я предполагаю, что это не правильно, потому что я считаю, что showDialog является асинхронным, и я предполагаю, что эта функция зависит от отображения диалогового окна в течение достаточного времени._showAlert3 не работает, потому что диалоговое окно остается на экране и не очищается.
Если _showAlert2 хотя он работает неправильно по вышеуказанной причине, может кто-нибудь показать мне, как это должно быть структурировано, чтобы это можно было сделатьв одной функции.
Примеры:
void _showAlert0(BuildContext context, String text, int seconds) async {
return await showDialog(
barrierDismissible: false,
context: context,
builder: (context) => AlertDialog(
title: Text("Error"),
content: Text(text),
));
}
void _showAlert1(BuildContext context, String text, int seconds) async {
_showAlert0(context, text, seconds);
await Future.delayed(Duration(seconds: seconds));
Navigator.of(context).pop(true);
}
void _showAlert2(BuildContext context, String text, int seconds) async {
showDialog(
barrierDismissible: false,
context: context,
builder: (context) => AlertDialog(
title: Text("Error"),
content: Text(text),
));
await Future.delayed(Duration(seconds: seconds));
Navigator.of(context).pop(true);
}
void _showAlert3(BuildContext context, String text, int seconds) async {
await showDialog(
barrierDismissible: false,
context: context,
builder: (context) => AlertDialog(
title: Text("Error"),
content: Text(text),
));
await Future.delayed(Duration(seconds: seconds));
Navigator.of(context).pop(true);
}