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
|
import 'package:flutter/material.dart';
import 'package:pmsna1/database/helper.dart';
import 'package:pmsna1/models/post.dart';
import 'package:pmsna1/providers/flags_provider.dart';
import 'package:provider/provider.dart';
class NewPostScreen extends StatefulWidget {
const NewPostScreen({super.key});
@override
State<NewPostScreen> createState() => _NewPostScreenState();
}
class _NewPostScreenState extends State<NewPostScreen> {
final TextEditingController _controller = TextEditingController();
final _formKey = GlobalKey<FormState>();
final DatabaseHelper _database = DatabaseHelper();
Post? post;
@override
Widget build(BuildContext context) {
post = ModalRoute.of(context)?.settings.arguments as Post?;
if (post != null) {
_controller.text = post!.description;
}
FlagsProvider flags = Provider.of<FlagsProvider>(context);
return Scaffold(
appBar: AppBar(
title: const Text('Nueva publicación'),
actions: [
IconButton(
icon:
post == null ? const Icon(Icons.send) : const Icon(Icons.edit),
tooltip: post == null ? 'Publicar' : 'Editar',
onPressed: () {
if (post == null) {
_database.insert('posts', {
'description': _controller.text,
'date': DateTime.now().toString(),
}).then((value) {
SnackBar bar = SnackBar(
content: Text(
value > 0 ? 'Registro insertado' : 'Ocurrió un error',
),
);
ScaffoldMessenger.of(context).showSnackBar(bar);
Navigator.of(context).pop();
flags.triggerRefresh();
});
} else {
_database
.update(
'posts',
{
'description': _controller.text,
'date': post!.date,
},
'id',
post!.id)
.then((value) {
SnackBar bar = SnackBar(
content: Text(
value > 0 ? 'Registro modificado' : 'Ocurrió un error',
),
);
ScaffoldMessenger.of(context).showSnackBar(bar);
Navigator.of(context).pop();
flags.triggerRefresh();
});
}
},
)
],
),
body: Padding(
padding: const EdgeInsets.all(12.0),
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
controller: _controller,
maxLines: 4,
textAlignVertical: TextAlignVertical.top,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Contenido',
),
validator: (value) {
if (value != null && value.isNotEmpty) {
return null;
}
return 'Este campo no debe estar vacío';
},
),
],
),
),
),
);
}
}
|