Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rafa Castillo Passols
/
Prototipo-Multimedia
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
470c1e15
authored
Mar 21, 2025
by
Diego Pérez Peña
1
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Página de conversión y página de metadatos actualizadas
parent
f1d29c6d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
211 additions
and
165 deletions
lib/modelo/carpeta.dart
lib/modelo/lista_seleccionables.dart
lib/paginas/pagina_configuracion.dart
lib/paginas/pagina_configuracion_carpeta.dart
lib/paginas/pagina_conversion.dart
lib/paginas/pagina_metadatos.dart
lib/paginas/pagina_principal_llena.dart
lib/widgets/seleccionable_widget.dart
lib/modelo/carpeta.dart
View file @
470c1e15
...
...
@@ -30,14 +30,13 @@ class Carpeta extends ElementoSeleccionable{
_directory
=
directory
,
_formatos
=
formatos
,
super
(
nombre:
directory
.
path
.
split
(
'/'
).
last
,
icon:
const
Icon
(
Icons
.
folder_outlined
));
Carpeta
setFormatoDestino
(
Formato
original
,
Formato
destino
){
void
setFormatoDestino
(
Formato
original
,
Formato
?
destino
){
final
formatosAlt
=
formatos
.
toList
();
for
(
InfoFormato
i
in
formatosAlt
){
if
(
i
.
formatoOriginal
==
original
){
i
.
formatoDestino
=
destino
;
}
}
return
Carpeta
.
fromList
(
id:
id
,
directory:
directory
,
formatos:
formatosAlt
);
}
@override
...
...
@@ -76,4 +75,10 @@ class InfoFormato {
// TODO: <implement>
}
}
@override
bool
operator
==(
Object
other
)
{
if
(
other
is
InfoFormato
)
return
this
.
formatoOriginal
==
other
.
formatoOriginal
;
return
super
==
other
;
}
}
\ No newline at end of file
lib/modelo/lista_seleccionables.dart
View file @
470c1e15
...
...
@@ -4,6 +4,7 @@ import 'package:uuid/uuid.dart';
import
'carpeta.dart'
;
import
'elemento_seleccionable.dart'
;
import
'archivo.dart'
;
import
'formato.dart'
;
class
ListaSeleccionables
extends
ChangeNotifier
{
final
_seleccionables
=
<
ElementoSeleccionable
>[];
...
...
@@ -27,7 +28,7 @@ class ListaSeleccionables extends ChangeNotifier {
void
addCarpeta
(
Directory
directory
){
_seleccionables
.
add
(
Carpeta
(
id:
const
Uuid
().
v1
(),
directory:
directory
));
directory:
directory
,
formatos:
<
Formato
,
bool
>{
Formato
.
mp4
:
false
,
Formato
.
mp3
:
true
}
));
notifyListeners
();
}
}
\ No newline at end of file
lib/paginas/pagina_configuracion.dart
View file @
470c1e15
...
...
@@ -5,12 +5,16 @@ import 'package:prueba_multimedia/paginas/paginas.dart';
class
PaginaConfiguracion
extends
StatefulWidget
{
final
ListaSeleccionables
_lista
;
final
int
_indice
;
final
ElementoSeleccionable
_elementoAsociado
;
const
PaginaConfiguracion
({
super
.
key
,
required
elementoAsociado
}):
_elementoAsociado
=
elementoAsociado
;
required
ListaSeleccionables
lista
,
required
int
indice
,
required
ElementoSeleccionable
elemento
}):
_lista
=
lista
,
_indice
=
indice
,
_elementoAsociado
=
elemento
;
@override
State
<
PaginaConfiguracion
>
createState
()
=>
_PaginaConfiguracionState
();
...
...
@@ -37,11 +41,7 @@ class _PaginaConfiguracionState extends State<PaginaConfiguracion> {
)
),
),
body:
Consumer
<
ListaSeleccionables
>(
builder:
(
context
,
manager
,
child
){
return
_construirCuerpo
(
manager
);
},
),
body:
_construirCuerpo
(
widget
.
_lista
),
bottomNavigationBar:
_construirBarraNavegacion
()
);
}
...
...
@@ -67,40 +67,32 @@ class _PaginaConfiguracionState extends State<PaginaConfiguracion> {
if
(
widget
.
_elementoAsociado
is
Convertible
){
final
arch
=
widget
.
_elementoAsociado
as
Convertible
;
if
(
_categoriaActiva
==
0
){
return
PaginaConversion
(
lista:
manager
,
formatoOriginal:
arch
.
formatoOriginal
);
return
PaginaConversion
.
convertible
(
lista:
manager
,
indiceArchivo:
widget
.
_indice
,
elemento:
arch
,
formatoOriginal:
arch
.
formatoOriginal
);
}
else
if
(
_categoriaActiva
==
2
){
return
PaginaMetadatos
(
formato:
arch
.
formatoOriginal
);
else
if
(
_categoriaActiva
==
2
||
arch
.
formatoOriginal
.
tipoMultimedia
!=
TipoMultimedia
.
video
){
return
PaginaMetadatos
(
lista:
manager
,
archivo:
arch
,
indiceSeleccionable:
widget
.
_indice
);
}
else
{
if
(
arch
.
formatoOriginal
.
tipoMultimedia
==
TipoMultimedia
.
video
){
return
PaginaFotograma
();
}
// Página de metadatos
return
PaginaMetadatos
(
formato:
arch
.
formatoOriginal
);
return
PaginaFotograma
();
}
}
// Páginas de carpetas y formato de archivo para carpeta
// TODO: Carpeta de ejemplo, cargar carpetas de verdad
return
PaginaConfiguracionCarpeta
(
formatosCarpeta:
[
InfoFormato
(
formato:
Formato
.
jpg
,
nombreCarpeta:
widget
.
_elementoAsociado
.
nombre
,
subCarpeta:
false
,
archivos:
[]),
InfoFormato
(
formato:
Formato
.
mp4
,
nombreCarpeta:
widget
.
_elementoAsociado
.
nombre
,
subCarpeta:
false
,
archivos:
[]),
InfoFormato
(
formato:
Formato
.
tif
,
nombreCarpeta:
widget
.
_elementoAsociado
.
nombre
,
subCarpeta:
true
,
archivos:
[]),
InfoFormato
(
formato:
Formato
.
png
,
nombreCarpeta:
widget
.
_elementoAsociado
.
nombre
,
subCarpeta:
true
,
archivos:
[])
]);
return
PaginaConfiguracionCarpeta
(
lista:
manager
,
carpeta:
widget
.
_elementoAsociado
as
Carpeta
,
indice:
widget
.
_indice
);
}
BottomNavigationBar
?
_construirBarraNavegacion
(){
...
...
lib/paginas/pagina_configuracion_carpeta.dart
View file @
470c1e15
...
...
@@ -3,10 +3,21 @@ import 'package:prueba_multimedia/modelo/modelo.dart';
import
'package:prueba_multimedia/paginas/paginas.dart'
;
class
PaginaConfiguracionCarpeta
extends
StatefulWidget
{
final
ListaSeleccionables
_lista
;
final
List
<
InfoFormato
>
_formatosCarpeta
;
const
PaginaConfiguracionCarpeta
({
super
.
key
,
required
List
<
InfoFormato
>
formatosCarpeta
}):
_formatosCarpeta
=
formatosCarpeta
;
final
int
_indice
;
final
Carpeta
_carpeta
;
PaginaConfiguracionCarpeta
({
super
.
key
,
required
ListaSeleccionables
lista
,
required
int
indice
,
required
Carpeta
carpeta
}):
_lista
=
lista
,
_indice
=
indice
,
_carpeta
=
carpeta
,
_formatosCarpeta
=
carpeta
.
formatos
;
@override
State
<
PaginaConfiguracionCarpeta
>
createState
()
=>
_PaginaConfiguracionCarpetaState
();
...
...
@@ -83,6 +94,7 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
onChanged:
(
bool
?
value
)
{
setState
(()
{
_incluirSubcarpetas
=
value
!;
widget
.
_lista
.
actualizaSeleccionable
(
widget
.
_indice
,
widget
.
_carpeta
);
});
})
],
...
...
@@ -194,7 +206,11 @@ class _PaginaConfiguracionCarpetaState extends State<PaginaConfiguracionCarpeta>
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
elementoAsociado:
i
.
conversion
);
return
PaginaConfiguracion
(
indice:
widget
.
_formatosCarpeta
.
indexOf
(
i
),
elemento:
i
.
conversion
,
lista:
widget
.
_lista
,
);
}
));
},
...
...
lib/paginas/pagina_conversion.dart
View file @
470c1e15
...
...
@@ -4,28 +4,44 @@ import 'package:prueba_multimedia/modelo/modelo.dart';
class
PaginaConversion
extends
StatefulWidget
{
final
ListaSeleccionables
_lista
;
final
int
_indiceArchivo
;
final
ElementoSeleccionable
_seleccionable
;
final
Carpeta
?
_carpeta
;
final
InfoFormato
?
_infoFormato
;
final
Convertible
?
_archivo
;
final
Formato
_formatoOriginal
;
const
PaginaConversion
({
const
PaginaConversion
.
convertible
({
super
.
key
,
required
Formato
formatoOriginal
,
required
int
indiceArchivo
,
required
Convertible
seleccionable
,
required
Convertible
elemento
,
required
ListaSeleccionables
lista
}):
_formatoOriginal
=
formatoOriginal
,
_indiceArchivo
=
indiceArchivo
,
_seleccionable
=
seleccionable
,
_archivo
=
elemento
,
_carpeta
=
null
,
_infoFormato
=
null
,
_lista
=
lista
;
const
PaginaConversion
.
carpeta
({
super
.
key
,
required
Formato
formatoOriginal
,
required
int
indiceArchivo
,
required
Carpeta
carpeta
,
required
InfoFormato
infoFormato
,
required
ListaSeleccionables
lista
}):
_formatoOriginal
=
formatoOriginal
,
_indiceArchivo
=
indiceArchivo
,
_archivo
=
null
,
_carpeta
=
carpeta
,
_infoFormato
=
infoFormato
,
_lista
=
lista
;
@override
State
<
PaginaConversion
>
createState
()
=>
_PaginaConversionState
();
}
class
_PaginaConversionState
extends
State
<
PaginaConversion
>
with
SingleTickerProviderStateMixin
{
// Podríamos hacer que en vez de poder haber nulos sea el mismo formato
// que el de origen de manera predeterminada ?
Formato
?
_formatoConvertido
;
Calidad
?
_calidadActual
=
null
;
...
...
@@ -36,6 +52,12 @@ class _PaginaConversionState extends State<PaginaConversion>
void
initState
()
{
super
.
initState
();
_tabController
=
TabController
(
length:
3
,
vsync:
this
);
if
(
widget
.
_carpeta
!=
null
){
_formatoConvertido
=
widget
.
_infoFormato
!.
formatoDestino
;
}
else
{
_formatoConvertido
=
widget
.
_archivo
!.
formatoDestino
;
}
}
@override
...
...
@@ -52,11 +74,11 @@ class _PaginaConversionState extends State<PaginaConversion>
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
_create
OriginalFormatBox
(
),
_create
FormatBox
(
true
),
const
SizedBox
(
width:
10.0
),
Icon
(
Icons
.
chevron_right
),
const
SizedBox
(
width:
10.0
),
_create
ConversionFormatBox
(
)
_create
FormatBox
(
false
)
],
),
SizedBox
(
height:
20.0
),
...
...
@@ -69,34 +91,21 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}
Widget
_createOriginalFormatBox
(){
final
String
nombreFormato
=
widget
.
_formatoOriginal
.
name
.
toUpperCase
();
return
DecoratedBox
(
decoration:
BoxDecoration
(
border:
Border
.
all
(
color:
Colors
.
black
,
),
borderRadius:
BorderRadius
.
circular
(
15
),
color:
Colors
.
black26
),
child:
Padding
(
padding:
const
EdgeInsets
.
all
(
13.0
),
child:
Text
(
nombreFormato
,
style:
Theme
.
of
(
context
).
textTheme
.
titleLarge
,
textScaler:
TextScaler
.
linear
(
1.3
)
),
)
);
}
_createConversionFormatBox
()
{
Widget
_createFormatBox
(
bool
original
){
final
String
nombreFormato
;
if
(
_formatoConvertido
==
null
){
nombreFormato
=
' '
;
}
else
{
nombreFormato
=
_formatoConvertido
!.
name
.
toUpperCase
();
final
Color
fondo
;
if
(
original
){
nombreFormato
=
widget
.
_formatoOriginal
.
name
.
toUpperCase
();
fondo
=
Colors
.
black26
;
}
else
{
if
(
_formatoConvertido
==
null
){
nombreFormato
=
' '
;
fondo
=
Colors
.
white
;
}
else
{
nombreFormato
=
_formatoConvertido
!.
name
.
toUpperCase
();
fondo
=
Theme
.
of
(
context
).
colorScheme
.
inversePrimary
;
}
}
return
DecoratedBox
(
...
...
@@ -105,7 +114,7 @@ class _PaginaConversionState extends State<PaginaConversion>
color:
Colors
.
black
,
),
borderRadius:
BorderRadius
.
circular
(
15
),
color:
_formatoConvertido
==
null
?
Colors
.
white
:
Theme
.
of
(
context
).
colorScheme
.
inversePrimary
color:
fondo
),
child:
Padding
(
padding:
const
EdgeInsets
.
all
(
13.0
),
...
...
@@ -156,18 +165,18 @@ class _PaginaConversionState extends State<PaginaConversion>
}
}
Widget
_create
DefaultConversionPanel
()
{
Widget
_create
TabVideos
()
{
return
Material
(
clipBehavior:
Clip
.
antiAlias
,
shape:
BeveledRectangleBorder
(
side:
BorderSide
(
color:
Colors
.
black
,
width:
1
),
borderRadius:
BorderRadius
.
only
(
topLeft:
Radius
.
circular
(
20.0
),
topRight:
Radius
.
circular
(
20.0
)
)
side:
BorderSide
(
color:
Colors
.
black
,
width:
1
),
borderRadius:
BorderRadius
.
only
(
topLeft:
Radius
.
circular
(
20.0
),
topRight:
Radius
.
circular
(
20.0
)
)
),
child:
Container
(
height:
MediaQuery
.
of
(
context
).
size
.
height
-
380
,
...
...
@@ -179,15 +188,39 @@ class _PaginaConversionState extends State<PaginaConversion>
children:
[
_createBotonesPerfilFormato
(),
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
-
460
,
height:
68
,
child:
TabBar
(
controller:
_tabController
,
tabs:
<
Widget
>[
Tab
(
icon:
TipoMultimedia
.
video
.
icono
,
text:
'Vídeo'
,
),
Tab
(
icon:
TipoMultimedia
.
audio
.
icono
,
text:
'Audio'
,
),
Tab
(
icon:
TipoMultimedia
.
imagen
.
icono
,
text:
'Imagen'
,
)
]
),
),
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
-
528
,
child:
Padding
(
padding:
const
EdgeInsets
.
only
(
top:
16.0
),
child:
GridView
.
count
(
crossAxisCount:
_showProfiles
?
1
:
3
,
childAspectRatio:
_showProfiles
?
6.0
:
1.0
,
crossAxisSpacing:
12
,
mainAxisSpacing:
12
,
children:
_showProfiles
?
_createListPerfiles
()
:
_createGridBotonesConversion
()
child:
TabBarView
(
controller:
_tabController
,
children:
TipoMultimedia
.
values
.
map
((
tipo
)
{
return
GridView
.
count
(
crossAxisCount:
3
,
crossAxisSpacing:
12
,
mainAxisSpacing:
12
,
children:
_createGridBotonesConversion
(
tipo:
tipo
)
);
}).
toList
()
),
),
),
...
...
@@ -198,18 +231,18 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}
Widget
_create
TabVideos
()
{
Widget
_create
DefaultConversionPanel
()
{
return
Material
(
clipBehavior:
Clip
.
antiAlias
,
shape:
BeveledRectangleBorder
(
side:
BorderSide
(
color:
Colors
.
black
,
width:
1
),
borderRadius:
BorderRadius
.
only
(
topLeft:
Radius
.
circular
(
20.0
),
topRight:
Radius
.
circular
(
20.0
)
)
side:
BorderSide
(
color:
Colors
.
black
,
width:
1
),
borderRadius:
BorderRadius
.
only
(
topLeft:
Radius
.
circular
(
20.0
),
topRight:
Radius
.
circular
(
20.0
)
)
),
child:
Container
(
height:
MediaQuery
.
of
(
context
).
size
.
height
-
380
,
...
...
@@ -221,39 +254,15 @@ class _PaginaConversionState extends State<PaginaConversion>
children:
[
_createBotonesPerfilFormato
(),
SizedBox
(
height:
68
,
child:
TabBar
(
controller:
_tabController
,
tabs:
<
Widget
>[
Tab
(
icon:
TipoMultimedia
.
video
.
icono
,
text:
'Vídeo'
,
),
Tab
(
icon:
TipoMultimedia
.
audio
.
icono
,
text:
'Audio'
,
),
Tab
(
icon:
TipoMultimedia
.
imagen
.
icono
,
text:
'Imagen'
,
)
]
),
),
SizedBox
(
height:
MediaQuery
.
of
(
context
).
size
.
height
-
528
,
height:
MediaQuery
.
of
(
context
).
size
.
height
-
460
,
child:
Padding
(
padding:
const
EdgeInsets
.
only
(
top:
16.0
),
child:
TabBarView
(
controller:
_tabController
,
children:
TipoMultimedia
.
values
.
map
((
tipo
)
{
return
GridView
.
count
(
crossAxisCount:
3
,
crossAxisSpacing:
12
,
mainAxisSpacing:
12
,
children:
_createGridBotonesConversion
(
tipo:
tipo
)
);
}).
toList
()
child:
GridView
.
count
(
crossAxisCount:
_showProfiles
?
1
:
3
,
childAspectRatio:
_showProfiles
?
6.0
:
1.0
,
crossAxisSpacing:
12
,
mainAxisSpacing:
12
,
children:
_showProfiles
?
_createListPerfiles
()
:
_createGridBotonesConversion
()
),
),
),
...
...
@@ -326,7 +335,6 @@ class _PaginaConversionState extends State<PaginaConversion>
formatoPerfil
=
perfil
.
extensionMusica
;
}
if
(
formatoPerfil
!=
null
){
Color
color
=
Theme
.
of
(
context
).
cardColor
;
if
(
formatoPerfil
==
widget
.
_formatoOriginal
){
...
...
@@ -348,11 +356,8 @@ class _PaginaConversionState extends State<PaginaConversion>
),
);
}
:
()
{
if
(
_formatoConvertido
!=
formatoPerfil
)
{
setState
(()
{
_formatoConvertido
=
formatoPerfil
;
_calidadActual
=
perfil
.
calidad
;
});
if
(
_formatoConvertido
!=
formatoPerfil
&&
_calidadActual
!=
perfil
.
calidad
)
{
_cambiarFormatoCalidad
(
formatoPerfil
!,
perfil
.
calidad
);
}
},
child:
Container
(
...
...
@@ -395,27 +400,10 @@ class _PaginaConversionState extends State<PaginaConversion>
borderRadius:
BorderRadius
.
circular
(
20.0
),
onTap:
_formatoConvertido
==
elemento
?
()
{
setState
(()
{
_formatoConvertido
=
null
;
_ca
lidadActual
=
null
;
_formatoConvertido
=
_calidadActual
=
null
;
_ca
mbiarFormatoCalidad
(
null
,
null
)
;
});
}
:
()
{
setState
((){
_formatoConvertido
=
elemento
;
// TODO: Cambiar calidad del archivo
ElementoSeleccionable
resultado
;
if
(
widget
.
_seleccionable
is
Carpeta
){
final
formatos
=
(
widget
.
_seleccionable
as
Carpeta
).
formatos
;
for
(
InfoFormato
f
in
formatos
){
if
(
f
.
formatoOriginal
==
widget
.
_formatoOriginal
){
}
}
}
else
{
}
widget
.
_lista
.
actualizaSeleccionable
(
widget
.
_indiceArchivo
,
resultado
);
});
},
}
:
()
=>
_cambiarFormatoCalidad
(
elemento
,
Calidad
.
media
),
onLongPress:
()
{
showDialog
<
void
>(
context:
context
,
...
...
@@ -460,4 +448,25 @@ class _PaginaConversionState extends State<PaginaConversion>
);
}).
toList
();
}
}
void
_cambiarFormatoCalidad
(
Formato
?
destino
,
Calidad
?
calidad
){
setState
((){
_formatoConvertido
=
destino
;
_calidadActual
=
calidad
;
ElementoSeleccionable
resultado
;
if
(
widget
.
_carpeta
!=
null
){
widget
.
_carpeta
!.
setFormatoDestino
(
widget
.
_formatoOriginal
,
_formatoConvertido
);
resultado
=
widget
.
_carpeta
!;
}
else
{
widget
.
_archivo
!.
formatoDestino
=
_formatoConvertido
;
resultado
=
widget
.
_archivo
!;
}
// TODO: ACTUALIZAR CALIDAD
widget
.
_lista
.
actualizaSeleccionable
(
widget
.
_indiceArchivo
,
resultado
);
});
}
}
\ No newline at end of file
lib/paginas/pagina_metadatos.dart
View file @
470c1e15
...
...
@@ -2,9 +2,27 @@ import 'package:flutter/material.dart';
import
'package:prueba_multimedia/modelo/modelo.dart'
;
class
PaginaMetadatos
extends
StatefulWidget
{
final
Formato
_formato
;
const
PaginaMetadatos
({
super
.
key
,
required
formato
}):
_formato
=
formato
;
final
ListaSeleccionables
_lista
;
late
final
Formato
_formato
;
final
Convertible
_archivo
;
final
int
_indiceArchivo
;
PaginaMetadatos
({
super
.
key
,
required
ListaSeleccionables
lista
,
required
Convertible
archivo
,
required
int
indiceSeleccionable
}):
_archivo
=
archivo
,
_indiceArchivo
=
indiceSeleccionable
,
_lista
=
lista
{
if
(
_archivo
.
formatoDestino
==
null
){
_formato
=
_archivo
.
formatoOriginal
;
}
else
{
_formato
=
_archivo
.
formatoDestino
!;
}
}
@override
State
<
PaginaMetadatos
>
createState
()
=>
_PaginaMetadatosState
();
...
...
lib/paginas/pagina_principal_llena.dart
View file @
470c1e15
...
...
@@ -19,7 +19,7 @@ class PaginaPrincipalLlena extends StatelessWidget {
return
const
SizedBox
(
height:
8.0
);
},
itemBuilder:
(
context
,
index
)
{
return
SeleccionableWidget
(
seleccionable:
seleccionables
[
index
]
);
return
SeleccionableWidget
(
indice:
index
,
seleccionable:
seleccionables
[
index
],
lista:
listaSeleccionables
);
},
),
);
...
...
lib/widgets/seleccionable_widget.dart
View file @
470c1e15
...
...
@@ -3,9 +3,11 @@ import 'package:prueba_multimedia/paginas/paginas.dart';
import
'package:prueba_multimedia/modelo/modelo.dart'
;
class
SeleccionableWidget
extends
StatelessWidget
{
final
int
indice
;
final
ElementoSeleccionable
seleccionable
;
final
ListaSeleccionables
lista
;
const
SeleccionableWidget
({
super
.
key
,
required
this
.
seleccionable
});
const
SeleccionableWidget
({
super
.
key
,
required
this
.
indice
,
required
this
.
seleccionable
,
required
this
.
lista
});
// TODO: ACTUALIZAR PARA MOSTRAR FORMATOS Y CAMBIOS
@override
...
...
@@ -32,7 +34,7 @@ class SeleccionableWidget extends StatelessWidget {
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
elementoAsociado:
seleccionable
);
return
PaginaConfiguracion
(
indice:
indice
,
elemento:
seleccionable
,
lista:
lista
);
}));
},
)
...
...
Diego Pérez Peña
@dpp00022
mentioned in commit
287ae626
Mar 21, 2025
mentioned in commit
287ae626
mentioned in commit 287ae626a31dc3eeefbc5cd15ffac7dc34b6c4f7
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment