Páginas de configuración y conversión empezadas

parent 269a0fce
import './conversion.dart';
import './elemento_seleccionable.dart';
import 'formato.dart';
class ArchivoIndividual extends ElementoSeleccionable{
final Conversion _conversion;
List<String> metadatos = [];
Formato get formatoActual => _conversion.formatoOriginal;
ArchivoIndividual({required super.id, required super.nombre, required super.localizacion,
required Conversion conversion}): _conversion = conversion;
......
......@@ -4,6 +4,8 @@ class Conversion{
final Formato _formatoOriginal;
Formato? _formatoDestino;
Formato get formatoOriginal => _formatoOriginal;
Conversion({required Formato formatoOriginal, Formato? formatoDestino = null}):
_formatoOriginal = formatoOriginal, _formatoDestino = formatoDestino;
......
......@@ -2,6 +2,8 @@ class Formato{
final ClaseFormato _extension;
Calidad _calidad;
ClaseFormato get claseFormato => _extension;
Formato({required ClaseFormato extension, Calidad calidad = Calidad.ORIGINAL}):
_extension = extension, _calidad = calidad;
}
......@@ -15,6 +17,10 @@ enum ClaseFormato{
final String _clasificacion;
final String _metadatos;
String get extension => _extension;
String get nombre => _nombre;
String get descripcion => _descripcion;
const ClaseFormato(this._extension, this._nombre, this._clasificacion, this._metadatos, this._descripcion);
}
......
import 'package:flutter/material.dart';
import 'package:prueba_multimedia/modelo/archivo_individual.dart';
import 'package:prueba_multimedia/modelo/elemento_seleccionable.dart';
import 'package:prueba_multimedia/modelo/carpeta.dart';
import 'package:prueba_multimedia/modelo/enlace.dart';
import 'package:prueba_multimedia/paginas/pagina_conversion.dart';
class PaginaConfiguracion extends StatefulWidget {
final ElementoSeleccionable _elementoAsociado;
const PaginaConfiguracion({
super.key,
required elementoAsociado
}): _elementoAsociado = elementoAsociado;
@override
State<PaginaConfiguracion> createState() => _PaginaConfiguracionState();
}
class _PaginaConfiguracionState extends State<PaginaConfiguracion> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Icon(_getIcon())
),
TextSpan(
text: _getShownName(),
style: Theme.of(context).textTheme.titleLarge,
)
]
)
),
actions: [
IconButton(
onPressed: () {},
icon: Icon(Icons.check)
)
],
),
body: _construirCuerpo(),
);
}
IconData _getIcon(){
if(widget._elementoAsociado is Carpeta){
return Icons.folder;
}
if(widget._elementoAsociado is Enlace){
return Icons.link;
}
return Icons.insert_drive_file;
}
String _getShownName() {
final sb = StringBuffer();
sb.write(" ");
sb.write(widget._elementoAsociado.nombre);
if(widget._elementoAsociado is ArchivoIndividual){
sb.write((widget._elementoAsociado as ArchivoIndividual).formatoActual.claseFormato.extension);
}
return sb.toString();
}
Widget _construirCuerpo() {
return PaginaConversion(formatoOriginal: (widget._elementoAsociado as ArchivoIndividual).formatoActual);
}
}
import 'package:flutter/material.dart';
import 'package:prueba_multimedia/modelo/conversion.dart';
import '../modelo/formato.dart';
class PaginaConversion extends StatefulWidget {
final Formato _formatoOriginal;
const PaginaConversion({
super.key,
required formatoOriginal
}): _formatoOriginal = formatoOriginal;
@override
State<PaginaConversion> createState() => _PaginaConversionState();
}
class _PaginaConversionState extends State<PaginaConversion> {
Formato? _formatoConvertido;
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_createOriginalFormatBox(),
const SizedBox(width: 10.0),
Icon(Icons.chevron_right),
const SizedBox(width: 10.0),
_createConversionFormatBox()
],
),
)
],
);
}
Widget _createOriginalFormatBox(){
final String nombreFormato = widget._formatoOriginal.claseFormato.extension.substring(1).toUpperCase();
return DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black,
),
borderRadius: BorderRadius.circular(15),
color: Colors.black12
),
child: Padding(
padding: const EdgeInsets.all(13.0),
child: Text(
nombreFormato,
style: Theme.of(context).textTheme.titleLarge,
textScaler: TextScaler.linear(1.3)
),
)
);
}
_createConversionFormatBox() {
final String nombreFormato;
if(_formatoConvertido == null){
nombreFormato = ' ';
}
else{
nombreFormato = _formatoConvertido!.claseFormato.extension.substring(1).toUpperCase();
}
return DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black,
),
borderRadius: BorderRadius.circular(15),
color: _formatoConvertido == null ? Colors.white : Colors.black12
),
child: Padding(
padding: const EdgeInsets.all(13.0),
child: Text(
nombreFormato,
style: Theme.of(context).textTheme.titleLarge,
textScaler: TextScaler.linear(1.3)
),
)
);
}
}
import 'package:flutter/material.dart';
import 'package:prueba_multimedia/modelo/archivo_individual.dart';
import 'package:prueba_multimedia/modelo/carpeta.dart';
import 'package:prueba_multimedia/modelo/conversion.dart';
import 'package:prueba_multimedia/modelo/enlace.dart';
import 'package:prueba_multimedia/modelo/formato.dart';
import 'package:prueba_multimedia/paginas/pagina_configuracion.dart';
import 'package:prueba_multimedia/widget/convertex_fab_bar.dart';
import 'pagina_principal_llena.dart';
......@@ -24,6 +30,22 @@ class PaginaPrincipal extends StatefulWidget {
class _PaginaPrincipalState extends State<PaginaPrincipal> {
@override
Widget build(BuildContext context) {
return PaginaConfiguracion(elementoAsociado: ArchivoIndividual(
id: '1', nombre: 'miArchivo', localizacion: 'C:\\',
conversion: Conversion(formatoOriginal: Formato(
extension: ClaseFormato.PNG
))
));
/*return PaginaConfiguracion(elementoAsociado: Carpeta(
id: '2', nombre: 'miCarpeta', localizacion: 'C:\\'
));
return PaginaConfiguracion(elementoAsociado: Enlace(
id: '3', nombre: 'miArchivo', localizacion: 'C:\\',
conversion: Conversion(formatoOriginal: Formato(
extension: ClaseFormato.PNG
)),
redSocial: RedSocial.INSTAGRAM
));
return Scaffold(
appBar: AppBar(
title: Text('Convertex Prototipo'),
......@@ -54,7 +76,7 @@ class _PaginaPrincipalState extends State<PaginaPrincipal> {
child: ConVertexFabBar()
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
);
);*/
}
Widget _construirCuerpo(BuildContext context) {
......
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