Eu decidi criar um widget separado para tratar de Alerts.
Fui na pasta lib /components / show_dialog.dart.
Segue o código abaixo do widget:
import 'package:flutter/material.dart';
import '../data/task_dao.dart';
class ShowDialog extends StatelessWidget {
String title;
String message;
String param;
ShowDialog(this.title, this.message, this.param,{Key? key}): super(key: key);
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(title),
icon: Icon(Icons.delete),
content: Text(message),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context, 'Não'),
child: const Text('Não'),
),
TextButton(
onPressed: () {
TaskDao().delete(param);
Navigator.pop(context, 'Sim');
},
child: const Text('Sim'),
),
],
);
}
}
Percebam que eu criei, no construtor alguns parâmetros para reutilizar este widget em outras ocasiões com algumas modificações a serem realizadas futuramente.
Atenção para o parâmetro "param" que receberá o nome da Task e fará o delete desta.
Na classe task.dart, eu alterei o evento onLongPressed para receber o widget com os parâmetros no construtor.
onLongPress: (){
showDialog(
context: context,
builder: (BuildContext context){
return ShowDialog('Deletar', 'Tem certeza que deseja deletar essa tarefa ?', widget.nome);
});
},
É necessário chamar o método showDialog com os atributos contex e builder. Dentro do builder é preciso criar um BuildContext e dar um return no widget ShowDialog que foi criado.