Creado el dialogo para añadir dificultades

parent 8b76cee5
...@@ -30,19 +30,15 @@ class PantallaDificultad extends StatelessWidget { ...@@ -30,19 +30,15 @@ class PantallaDificultad extends StatelessWidget {
body: construirListaDificultad(), body: construirListaDificultad(),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add), child: const Icon(Icons.add),
onPressed: () { onPressed: () async {
Navigator.push( Dificultad? nuevo = await
context, showDialog<Dificultad>(
// TODO: MIRAR COMO MOSTRAR DIÁLOGO context: context,
MaterialPageRoute( builder: (context) => DificultadDialog()
builder: (context) {
return DificultadDialog(
crearDificultad: (dificultad) {Navigator.pop(context);},
editarDificultad: (_) {},
);
}
)
); );
if (nuevo != null && context.mounted) {
Provider.of<ListaDificultad>(context, listen: false).add(nuevo);
}
} }
), ),
); );
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:peponator/modelo/dificultad.dart'; import 'package:peponator/modelo/dificultad.dart';
class DificultadDialog extends StatefulWidget { class DificultadDialog extends StatefulWidget {
final Dificultad? dificultad; final Dificultad? dificultad;
final Function(Dificultad) crearDificultad;
final Function(Dificultad) editarDificultad;
final bool actualizando;
const DificultadDialog({super.key, this.dificultad, const DificultadDialog({super.key, this.dificultad});
required this.crearDificultad, required this.editarDificultad}):
actualizando = (dificultad != null);
@override @override
State<DificultadDialog> createState() => _DificultadDialogState(); State<DificultadDialog> createState() => _DificultadDialogState();
} }
// TODO: HACER QUE 'HECHO' SE DESABILITE CUANDO CAMPOS VACIOS
// TODO: MEJORAR EL ASPECTO
// TODO: CAMBIAR PARA USAR IDIOMA
class _DificultadDialogState extends State<DificultadDialog> { class _DificultadDialogState extends State<DificultadDialog> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
TextEditingController limiteController = TextEditingController(
text: widget.dificultad?.limiteSuperior.toString()
);
TextEditingController intentosController = TextEditingController(
text: widget.dificultad?.intentos.toString()
);
TextEditingController nombreController = TextEditingController(
text: widget.dificultad?.nombre.toString()
);
return SimpleDialog( return SimpleDialog(
title: Text( title: Text(
widget.actualizando widget.dificultad != null
? "Editar dificultad" ? "Editar dificultad"
: "Añadir dificultad" : "Añadir dificultad"
), ),
children: [ children: [
TextField( SimpleDialogOption(
child: Column(
), crossAxisAlignment: CrossAxisAlignment.start,
TextField( children: [
Text("Limite superior"),
), TextField(
TextField( controller: limiteController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
),
const SizedBox(height: 16,),
Text("Número de intentos"),
TextField(
controller: intentosController,
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
),
const SizedBox(height: 16,),
Text("Nombre"),
TextField(controller: nombreController),
],
),
), ),
IconButton( SimpleDialogOption(
onPressed: widget.actualizando child: Row(
? widget.editarDificultad(widget.dificultad!) mainAxisAlignment: MainAxisAlignment.spaceBetween,
: widget.crearDificultad(Dificultad( children: [
limiteInferior: 1, SimpleDialogOption(
limiteSuperior: 69, onPressed: () {
intentos: 10, Navigator.pop(context,
nombre: "Test" Dificultad(
) limiteInferior: 1,
limiteSuperior: int.parse(limiteController.text),
intentos: int.parse(intentosController.text),
nombre: nombreController.text,
)
);
},
child: Text("Hecho"),
), ),
icon: const Icon(Icons.check), SimpleDialogOption(
onPressed: () => Navigator.pop(context),
child: Text("Cancelar"),
)
],
),
) )
], ],
); );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment