1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../models/event.dart';
import '../providers/events_provider.dart';
class EventItem extends StatelessWidget {
final Event event;
const EventItem({super.key, required this.event});
final padding = 16.0;
final spacer = const SizedBox(
height: 12.0,
width: 12.0,
);
@override
Widget build(BuildContext context) {
final txtDate = Text(
event.date.toString().split(' ').first,
style: Theme.of(context).typography.englishLike.labelMedium?.copyWith(
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
);
final txtDesc = Text(
event.description,
style: Theme.of(context).typography.englishLike.bodyLarge?.copyWith(
color: Theme.of(context).colorScheme.onSurfaceVariant,
decoration: event.completed == true
? TextDecoration.lineThrough
: TextDecoration.none,
),
);
EventsProvider provider = context.watch<EventsProvider>();
return Card(
semanticContainer: true,
clipBehavior: Clip.antiAliasWithSaveLayer,
child: InkWell(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) => AlertDialog(
title: Text(event.description),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
title: const Text('ID'),
subtitle: Text(event.id.toString()),
),
ListTile(
title: const Text('Fecha'),
subtitle: Text(event.date.toIso8601String()),
),
ListTile(
title: const Text('Completado'),
subtitle: Text(event.completed == true ? "Sí" : "No"),
),
],
),
actions: [
TextButton(
child: const Text('OK'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
),
);
},
child: Padding(
padding: EdgeInsets.all(padding),
child: Row(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
txtDesc,
spacer,
txtDate,
],
),
const Expanded(child: SizedBox.shrink()),
ButtonBar(
children: [
IconButton(
icon: const Icon(Icons.edit),
onPressed: () {
Navigator.of(context)
.pushNamed('/newevent', arguments: event);
},
),
IconButton(
icon: const Icon(Icons.delete),
onPressed: () {
provider.deleteEvent(event.id);
},
)
],
),
],
),
),
),
);
}
}
|