Когда пользователь нажимает кнопку «Удалить» для сотрудника, должен появиться AlertDialog, чтобы предупредить пользователя.
![enter image description here](https://i.stack.imgur.com/at7SO.png)
Если пользователь подтверждает удаление затем AlertDialog исчезает, и в нижней части скаффолда должна появиться SnackBar с функцией отмены.
Проблема:
Когда я реализую метод SnackBar showSnackBar (context, index, employee) в классе AlertDialog Я получаю следующую ошибку:
он выбросил следующее утверждение при обработке жеста:
Scaffold.of ( ) вызывается с контекстом, который не содержит Scaffold.
showDeleteDialog(BuildContext context, Employee employee, int index) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title:
Text('Are you sure you want to delete: ${employee.name} ?'),
actions: <Widget>[
Row(
children: <Widget>[
FlatButton(
child: Text('Yes'),
onPressed: () {
DatabaseProvider.db.deleteEmployee(employee.id).then(
(_) => BlocProvider.of<EmployeeBloc>(context)
.add(DeleteEmployee(index)));
Navigator.pop(context,employee);
showSnackBar(context, index, employee);
}),
FlatButton(
child: Text('No!'),
onPressed: () => Navigator.pop(context)),
],
)
],
));
}
Вместо этого я подумал, что смогу вернуть сотрудника из showDeleteDialog, когда подтвердлю удаление. Когда результат не нулевой, тогда я должен показать SnackBar. Я пытался реализовать это с помощью Future / Asyn c, но безуспешно.
onPressed: () async {
Employee deletedEmployee = await showDeleteDialog(context, employee, index);
await showSnackBar(context, index, deletedEmployee);
},
Редактировать: Я хотел бы по возможности избегать использования GlobalKey , так как я прочитал, это не очень хорошо для производительности приложения.