Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rafa Castillo Passols
/
peponator
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
5125893e
authored
May 14, 2025
by
Rafa Castillo Passols
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Guardamos las dificultades custom
parent
a12724e8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
70 additions
and
11 deletions
lib/modelo/dificultad.dart
lib/modelo/listaDificultad.dart
lib/modelo/dificultad.dart
View file @
5125893e
...
...
@@ -23,6 +23,24 @@ class Dificultad {
int
get
maxIntentos
=>
_maxIntentos
;
String
get
nombre
=>
_nombre
;
factory
Dificultad
.
desdeJson
(
Map
<
String
,
dynamic
>
json
)
{
return
Dificultad
(
limite:
int
.
parse
(
json
[
'limite'
]),
maxIntentos:
int
.
parse
(
json
[
'maxIntentos'
]),
nombre:
json
[
'nombre'
]
);
}
String
toJson
()
{
return
'''
{
"limite": "
$limite
",
"maxIntentos": "
$maxIntentos
",
"nombre": "
$nombre
"
}
'''
;
}
static
final
Dificultad
facil
=
Dificultad
(
limite:
100
,
maxIntentos:
7
+
1
,
...
...
lib/modelo/listaDificultad.dart
View file @
5125893e
import
'dart:convert'
;
import
'package:flutter/material.dart'
;
import
'package:peponator/modelo/dificultad.dart'
;
import
'package:shared_preferences/shared_preferences.dart'
;
// TODO: CARGAR LAS DIFICULTADES CARGADAS EN MEMORIA
class
ListaDificultad
extends
ChangeNotifier
{
final
_dificultades
=
<
Dificultad
>[
Dificultad
.
facil
,
...
...
@@ -13,8 +14,9 @@ class ListaDificultad extends ChangeNotifier {
int
_indiceSeleccionado
=
0
;
bool
_cargando
=
true
;
ListaDificultad
()
{
_
getDificultadPreferencia
s
();
_
cargarDificultade
s
();
}
List
<
Dificultad
>
get
dificultades
=>
List
.
unmodifiable
(
_dificultades
);
...
...
@@ -26,37 +28,75 @@ class ListaDificultad extends ChangeNotifier {
bool
get
cargando
=>
_cargando
;
bool
get
listo
=>
!
_cargando
;
void
_getDificultadPreferencias
()
async
{
final
prefs
=
await
SharedPreferences
.
getInstance
();
_indiceSeleccionado
=
prefs
.
getInt
(
"dificultad"
)
??
0
;
_cargando
=
false
;
notifyListeners
();
}
Dificultad
get
(
int
index
)
{
return
_dificultades
[
index
];
}
void
add
(
Dificultad
dificultad
)
{
void
add
(
Dificultad
dificultad
)
async
{
_dificultades
.
add
(
dificultad
);
notifyListeners
();
_actualizarPreferenciaLista
();
}
void
delete
(
int
indice
)
{
void
delete
(
int
indice
)
async
{
_dificultades
.
removeAt
(
indice
);
if
(
indice
<=
_indiceSeleccionado
)
{
_indiceSeleccionado
--;
}
notifyListeners
();
_actualizarPreferenciaLista
();
_actualizarPreferenciaSeleccionado
();
}
void
update
(
int
indice
,
Dificultad
nuevo
)
{
_dificultades
[
indice
]
=
nuevo
;
notifyListeners
();
_actualizarPreferenciaLista
();
}
void
select
(
int
indice
)
async
{
_indiceSeleccionado
=
indice
;
notifyListeners
();
_actualizarPreferenciaSeleccionado
();
}
void
_cargarDificultades
()
async
{
final
prefs
=
await
SharedPreferences
.
getInstance
();
String
listaDificultad
=
prefs
.
getString
(
"listaDificultad"
)
??
"[]"
;
final
List
<
dynamic
>
dificultadesJson
=
jsonDecode
(
listaDificultad
);
for
(
var
dificultadJson
in
dificultadesJson
)
{
_dificultades
.
add
(
Dificultad
.
desdeJson
(
dificultadJson
));
}
_indiceSeleccionado
=
prefs
.
getInt
(
"dificultad"
)
??
0
;
_cargando
=
false
;
notifyListeners
();
}
// Podría mirar el tema de usar un cache para no acceder tanto
void
_actualizarPreferenciaLista
()
async
{
final
prefs
=
await
SharedPreferences
.
getInstance
();
await
prefs
.
setString
(
"listaDificultad"
,
_listaToJson
());
}
void
_actualizarPreferenciaSeleccionado
()
async
{
final
prefs
=
await
SharedPreferences
.
getInstance
();
await
prefs
.
setInt
(
"dificultad"
,
_indiceSeleccionado
);
}
String
_listaToJson
()
{
final
sb
=
StringBuffer
(
'[
\n
'
);
for
(
int
i
=
3
;
i
<
_dificultades
.
length
;
i
++)
{
sb
.
write
(
_dificultades
[
i
].
toJson
());
if
(
i
<
_dificultades
.
length
-
1
)
{
sb
.
write
(
',
\n
'
);
}
else
{
sb
.
write
(
'
\n
'
);
}
}
sb
.
write
(
']'
);
return
sb
.
toString
();
}
}
\ No newline at end of file
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