usei um pacote chamado slidable pra quando arrastar pra direita mostrar a opcao de delete e caixa de confirmacao apos clicar
return Slidable(
key: ValueKey(task.name),
endActionPane: ActionPane(
motion: const ScrollMotion(),
extentRatio: 0.25,
children: [
SlidableAction(
onPressed: (context) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(
'Deseja excluir ${task.name}?'),
content: const Text(
'A ação não pode ser desfeita.'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text('Não'),
),
TextButton(
onPressed: () {
TaskDao().delete(task.name);
Navigator.of(context).pop();
},
child: const Text('Sim'),
),
],
elevation: 24,
);
});
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
icon: Icons.delete,
label: 'Delete',
),
],
),
child: task,
);
no banco eu adicionei as colunas level e maestria na tabela pra manter algumas coisas dos desafios anteriores e modifiquei os metodos conforme necessario
lass TaskDao {
//attributes
static const String _tableName = 'taskTable';
static const String _name = 'name';
static const String _difficulty = 'difficulty';
static const String _image = 'image';
static const String _level = 'level';
static const String _mastery = 'mastery';
//constructor
static const String tableSql = 'CREATE TABLE $_tableName('
'$_name TEXT, '
'$_difficulty INTEGER, '
'$_image TEXT, '
'$_level TEXT, '
'$_mastery TEXT)';
link do projeto https://github.com/Zan-Kir/Alura/tree/main/nosso_primeiro_projeto