summaryrefslogtreecommitdiff
path: root/lib/screens/new_post_screen.dart
blob: a1b2d2d98658778d918860355369a2241ce5724d (plain)
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';
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}