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
6e5fdace
authored
Mar 19, 2025
by
Diego Pérez Peña
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Fusionada la adición de archivos con la interfaz de configuración
parent
11223e47
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
84 additions
and
98 deletions
lib/modelo/archivo.dart
lib/modelo/carpeta.dart
lib/modelo/elemento_seleccionable.dart
lib/modelo/lista_seleccionables.dart
lib/modelo/seleccionables.dart
lib/paginas/pagina_principal_llena.dart
lib/paginas/pagina_principal_vacia.dart
lib/widget/convertex_fab_bar.dart
lib/widget/seleccionable_widget.dart
pubspec.lock
pubspec.yaml
lib/modelo/archivo.dart
View file @
6e5fdace
...
...
@@ -16,5 +16,5 @@ class Archivo extends Convertible{
super
(
id:
id
,
nombre:
file
.
path
.
split
(
'/'
).
last
,
formatoOriginal:
ClaseFormato
.
fromExtension
(
file
.
path
.
split
(
'/'
).
last
.
split
(
'.'
).
last
),
icon:
Icon
(
Icons
.
insert_drive_file_outlined
)
);
icon:
ClaseFormato
.
fromExtension
(
file
.
path
.
split
(
'/'
).
last
.
split
(
'.'
).
last
).
tipoMultimedia
.
icono
);
}
\ No newline at end of file
lib/modelo/carpeta.dart
View file @
6e5fdace
...
...
@@ -7,14 +7,16 @@ import './elemento_seleccionable.dart';
import
'formato.dart'
;
class
Carpeta
extends
ElementoSeleccionable
{
final
Directory
_directory
;
bool
_incluirSubcarpetas
=
false
;
final
List
<
InfoFormato
>
_formatos
;
Directory
get
directory
=>
_directory
;
List
<
InfoFormato
>
get
formatos
=>
List
.
unmodifiable
(
_formatos
);
Carpeta
({
required
id
,
required
nombre
}):
_formatos
=
[],
super
(
id:
id
,
nombre:
nombre
,
icon:
const
Icon
(
Icons
.
folder_outlined
));
Carpeta
({
required
String
id
,
required
Directory
directory
}):
_
directory
=
directory
,
_
formatos
=
[],
super
(
id:
id
,
nombre:
directory
.
path
.
split
(
'/'
).
last
,
icon:
const
Icon
(
Icons
.
folder_outlined
));
@override
void
convertir
()
{
...
...
lib/modelo/elemento_seleccionable.dart
View file @
6e5fdace
...
...
@@ -3,16 +3,16 @@ import 'package:flutter/material.dart';
abstract
class
ElementoSeleccionable
{
final
String
_id
;
final
String
_nombre
;
final
Icon
_icon
;
final
Icon
_icon
o
;
String
get
id
=>
this
.
_id
;
String
get
nombre
=>
this
.
_nombre
;
Icon
get
icon
=>
this
.
_icon
;
Icon
get
icon
o
=>
this
.
_icono
;
ElementoSeleccionable
({
required
String
id
,
required
String
nombre
,
required
Icon
icon
}):
_id
=
id
,
_nombre
=
nombre
,
_icon
=
icon
;
_id
=
id
,
_nombre
=
nombre
,
_icon
o
=
icon
;
void
convertir
();
}
\ No newline at end of file
lib/modelo/lista_seleccionables.dart
View file @
6e5fdace
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:prueba_multimedia/modelo/seleccionables.dart'
;
import
'package:prueba_multimedia/modelo/carpeta.dart'
;
import
'package:prueba_multimedia/modelo/elemento_seleccionable.dart'
;
import
'package:prueba_multimedia/modelo/archivo.dart'
;
import
'package:uuid/uuid.dart'
;
class
ListaSeleccionables
extends
ChangeNotifier
{
final
_seleccionables
=
<
Seleccionable
>[];
List
<
Seleccionable
>
get
seleccionables
=>
List
.
unmodifiable
(
_seleccionables
);
final
_seleccionables
=
<
Elemento
Seleccionable
>[];
List
<
Elemento
Seleccionable
>
get
seleccionables
=>
List
.
unmodifiable
(
_seleccionables
);
void
borraSeleccionable
(
int
indice
)
{
_seleccionables
.
removeAt
(
indice
);
notifyListeners
();
}
void
addSeleccionable
(
Seleccionable
item
)
{
_seleccionables
.
add
(
item
);
void
addArchivo
(
File
file
)
{
_seleccionables
.
add
(
Archivo
(
id:
"Archivo"
,
file:
file
));
notifyListeners
();
}
void
addCarpeta
(
Directory
directory
){
_seleccionables
.
add
(
Carpeta
(
id:
const
Uuid
().
v1
(),
directory:
directory
));
notifyListeners
();
}
}
\ No newline at end of file
lib/modelo/seleccionables.dart
deleted
100644 → 0
View file @
11223e47
import
'dart:io'
;
import
'package:flutter/material.dart'
;
/// Representa un item que se puede añadir a la lista
/// de conversión.
class
Seleccionable
{
final
String
nombre
;
final
Icon
icono
;
Seleccionable
({
required
this
.
nombre
,
required
this
.
icono
});
}
/// Las carpetas son seleccionables que contienen otros seleccionables
class
Carpeta
extends
Seleccionable
{
final
Directory
directory
;
final
listaConvertibles
=
<
Seleccionable
>[];
final
bool
recursiva
;
Carpeta
(
this
.
directory
,
this
.
recursiva
):
super
(
nombre:
directory
.
path
.
split
(
'/'
).
last
,
icono:
const
Icon
(
Icons
.
folder
)
)
{
// TODO: mirar recursividad y Link objects
var
listaCarpeta
=
directory
.
list
(
recursive:
recursiva
);
listaCarpeta
.
forEach
(
(
entity
)
{
if
(
entity
is
File
)
{
listaConvertibles
.
add
(
Archivo
(
entity
));
}
else
if
(
entity
is
Directory
)
{
listaConvertibles
.
add
(
Carpeta
(
directory
,
false
));
}
});
}
}
/// Seleccionables que pueden pasar por un proceso de conversion de formatos
class
Convertible
extends
Seleccionable
{
final
String
formatoInicial
;
final
String
?
formatoFinal
;
Convertible
({
required
super
.
nombre
,
required
super
.
icono
,
required
this
.
formatoInicial
,
this
.
formatoFinal
});
}
class
Archivo
extends
Convertible
{
final
File
file
;
Archivo
(
this
.
file
):
super
(
nombre:
file
.
path
.
split
(
'/'
).
last
,
icono:
Icon
(
Icons
.
description_outlined
),
formatoInicial:
file
.
path
.
split
(
'.'
).
last
,
formatoFinal:
null
);
}
class
Enlace
extends
Convertible
{
final
String
enlace
;
Enlace
(
this
.
enlace
):
super
(
nombre:
enlace
,
icono:
Icon
(
Icons
.
link_outlined
),
formatoInicial:
enlace
,
formatoFinal:
null
);
}
lib/paginas/pagina_principal_llena.dart
View file @
6e5fdace
import
'package:flutter/material.dart'
;
import
'package:prueba_multimedia/modelo/lista_seleccionables.dart'
;
import
'package:prueba_multimedia/modelo/seleccionables.dart'
;
import
'package:prueba_multimedia/widget/seleccionable_widget.dart'
;
class
PaginaPrincipalLlena
extends
StatelessWidget
{
...
...
lib/paginas/pagina_principal_vacia.dart
View file @
6e5fdace
...
...
@@ -22,16 +22,6 @@ class PaginaPrincipalVacia extends StatelessWidget {
Text
(
'Pulsa el botón + para agregarlos'
,
style:
Theme
.
of
(
context
).
textTheme
.
bodyLarge
,
),
TextButton
(
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
elementoAsociado:
Carpeta
(
id:
"1"
,
nombre:
'miCarpeta'
));
}
));
},
child:
Text
(
'Pulsá'
)
)
],
),
...
...
lib/widget/convertex_fab_bar.dart
View file @
6e5fdace
...
...
@@ -4,7 +4,8 @@ import 'package:file_picker/file_picker.dart';
import
'package:flutter/material.dart'
;
import
'package:provider/provider.dart'
;
import
'package:prueba_multimedia/modelo/lista_seleccionables.dart'
;
import
'package:prueba_multimedia/modelo/seleccionables.dart'
;
import
'package:prueba_multimedia/modelo/carpeta.dart'
;
import
'package:prueba_multimedia/modelo/archivo.dart'
;
import
'action_button.dart'
;
import
'expandable_fab.dart'
;
...
...
@@ -156,7 +157,7 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
if
(
path
!=
null
)
{
// TODO: AÑADIR POSIBILIDAD RECURSIVIDAD
var
directory
=
Directory
(
path
);
manager
.
add
Seleccionable
(
Carpeta
(
directory
,
false
)
);
manager
.
add
Carpeta
(
directory
);
}
}
),
...
...
@@ -166,7 +167,7 @@ class _ConVertexFabBarState extends State<ConVertexFabBar> {
FilePickerResult
?
result
=
await
FilePicker
.
platform
.
pickFiles
();
if
(
result
!=
null
)
{
File
file
=
File
(
result
.
files
.
first
.
path
!);
manager
.
add
Seleccionable
(
Archivo
(
file
)
);
manager
.
add
Archivo
(
file
);
}
else
{
//
}
...
...
lib/widget/seleccionable_widget.dart
View file @
6e5fdace
import
'package:flutter/material.dart'
;
import
'package:prueba_multimedia/modelo/seleccionables.dart'
;
import
'package:prueba_multimedia/paginas/pagina_configuracion.dart'
;
import
'../modelo/carpeta.dart'
;
import
'../modelo/elemento_seleccionable.dart'
;
class
SeleccionableWidget
extends
StatelessWidget
{
final
Seleccionable
seleccionable
;
final
Elemento
Seleccionable
seleccionable
;
const
SeleccionableWidget
({
super
.
key
,
required
this
.
seleccionable
});
...
...
@@ -28,7 +30,12 @@ class SeleccionableWidget extends StatelessWidget {
IconButton
(
onPressed:
()
{},
icon:
Icon
(
Icons
.
menu
)),
IconButton
(
icon:
const
Icon
(
Icons
.
edit
),
onPressed:
()
{},
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
{
return
PaginaConfiguracion
(
elementoAsociado:
seleccionable
);
}));
},
)
],
);
...
...
pubspec.lock
View file @
6e5fdace
...
...
@@ -49,6 +49,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.3.4+2"
crypto:
dependency: transitive
description:
name: crypto
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
url: "https://pub.dev"
source: hosted
version: "3.0.6"
cupertino_icons:
dependency: "direct main"
description:
...
...
@@ -81,6 +89,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "9.0.2"
fixnum:
dependency: transitive
description:
name: fixnum
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
url: "https://pub.dev"
source: hosted
version: "1.1.1"
flutter:
dependency: "direct main"
description: flutter
...
...
@@ -213,6 +229,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.10.1"
sprintf:
dependency: transitive
description:
name: sprintf
sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
url: "https://pub.dev"
source: hosted
version: "7.0.0"
stack_trace:
dependency: transitive
description:
...
...
@@ -253,6 +277,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.4"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
uuid:
dependency: "direct main"
description:
name: uuid
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
url: "https://pub.dev"
source: hosted
version: "4.5.1"
vector_math:
dependency: transitive
description:
...
...
pubspec.yaml
View file @
6e5fdace
...
...
@@ -36,6 +36,7 @@ dependencies:
cupertino_icons
:
^1.0.8
provider
:
^6.1.2
file_picker
:
^9.0.2
uuid
:
^4.5.1
dev_dependencies
:
flutter_test
:
...
...
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