Primera versión de la página de ajustes

parent d8b5d872
import 'package:flutter/material.dart';
class PaginaAjustes extends StatefulWidget {
static const opcionesModoConversion = <String>[
"Copiar", "Comprimir", "Preguntar siempre"
];
static const opcionesIncluirSubcarpetas = <String>[
"Siempre", "Nunca"
];
// Si hemos elegido una carpeta entonces se tendría que mostrar
static const opcionesCarpetaSalida = <String>[
"Elegir", "Preguntar siempre"
];
const PaginaAjustes({super.key});
@override
State<PaginaAjustes> createState() => _PaginaAjustesState();
}
class _PaginaAjustesState extends State<PaginaAjustes> {
// Indices de los valores seleccionados de cada opcion
int modoConversion = 0;
int incluirSubcarpeta = 0;
int carpetaSalida = 0;
String subtituloModoConversion = "Copiar / Comprimir / Preguntar siempre";
String subtituloIncluirSubcarpetas = "Siempre / Nunca";
String subtituloCarpetaSalida = "Preguntar siempre / Elegir";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Ajustes"),
backgroundColor: Theme.of(context).primaryColor,
),
body: ListView(
children: [
InkWell(
onTap: () {
var callbacks = <VoidCallback>[];
PaginaAjustes.opcionesModoConversion.asMap().forEach(
(index, opcion) => callbacks.add(() {
setState(() {modoConversion = index;});
Navigator.pop(context);
})
);
mostrarDialogoOpciones(
opciones: PaginaAjustes.opcionesModoConversion,
callbacks: callbacks,
seleccionado: modoConversion
);
},
child: ListTile(
title: const Text("Modo de conversión"),
subtitle: Text(PaginaAjustes.opcionesModoConversion[modoConversion]),
),
),
InkWell(
onTap: () {
var callbacks = <VoidCallback>[];
PaginaAjustes.opcionesIncluirSubcarpetas.asMap().forEach(
(index, opcion) => callbacks.add(() {
setState(() {incluirSubcarpeta = index;});
Navigator.pop(context);
})
);
mostrarDialogoOpciones(
opciones: PaginaAjustes.opcionesIncluirSubcarpetas,
callbacks: callbacks,
seleccionado: incluirSubcarpeta
);
},
child: ListTile(
title: const Text("Incluir subcarpetas"),
subtitle: Text(PaginaAjustes.opcionesIncluirSubcarpetas[incluirSubcarpeta]),
),
),
InkWell(
onTap: () {
var callbacks = <VoidCallback>[];
PaginaAjustes.opcionesCarpetaSalida.asMap().forEach(
(index, opcion) => callbacks.add(() {
setState(() {carpetaSalida = index;});
Navigator.pop(context);
})
);
mostrarDialogoOpciones(
opciones: PaginaAjustes.opcionesCarpetaSalida,
callbacks: callbacks,
seleccionado: carpetaSalida
);
},
child: ListTile(
title: const Text("Carpeta de salida"),
subtitle: Text(PaginaAjustes.opcionesCarpetaSalida[carpetaSalida]),
),
),
InkWell(
onTap: () {},
child: ListTile(
title: const Text("Creadores"),
),
),
],
),
);
}
Future<T?> mostrarDialogoOpciones<T>({
required List<String> opciones,
required List<VoidCallback> callbacks,
required int seleccionado})
{
var listaOpciones = <Widget>[];
opciones.asMap().forEach((index, opcion) {
listaOpciones.add(
ListTile(
leading: Radio<int>(
value: index,
groupValue: seleccionado,
onChanged: (int? changed) {callbacks[index]();}
),
title: Text(opcion),
)
);
});
return showDialog(context: context,
builder: (context) => SimpleDialog(children: listaOpciones,)
);
}
}
......@@ -42,20 +42,9 @@ class PaginaPrincipal extends StatelessWidget {
color: Colors.white,
),
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: Text('Funcionalidad a implementar'),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(),
child: const Text('CLOSE'),
)
]
);
}
);
Navigator.push(context, MaterialPageRoute(builder:
(context) => PaginaAjustes()
));
}
)
]
......
......@@ -5,4 +5,5 @@ export 'pagina_fotograma.dart';
export 'pagina_metadatos.dart';
export 'pagina_principal.dart';
export 'pagina_principal_llena.dart';
export 'pagina_principal_vacia.dart';
\ No newline at end of file
export 'pagina_principal_vacia.dart';
export 'pagina_ajustes.dart';
\ No newline at end of file
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