I want to save and read a list of elements called coursesfav.
I have the following code where I made the map of the class, but I don't know how to save the elements of the string map inside a List one by one, going through the list and then displaying all the elements in a ListView.
This is what I have
//my class
class curso {
final String title;
final String entidad;
final String categoria;
final String emision;
final String imgcourse;
final String urlcourse;
final String idioma;
final String duracion;
final String description;
curso({
required this.title,
required this.entidad,
required this.categoria,
required this.emision,
required this.imgcourse,
required this.urlcourse,
required this.idioma,
required this.duracion,
required this.description,
});
Map<String, dynamic> toMap() {
return {
'title': title,
'entidad': entidad,
'categoria': categoria,
'emision': emision,
'imgcourse': imgcourse,
'urlcourse': urlcourse,
'idioma': idioma,
'duracion': duracion,
'description': description,
};
}
curso.fromMap(Map<String, dynamic> res)
: title = res["title"],
entidad = res["entidad"],
categoria = res["categoria"],
emision = res["emision"],
imgcourse = res["imgcourse"],
urlcourse = res["urlcourse"],
idioma = res["idioma"],
duracion = res["duracion"],
description = res["description"];
@override
String toString() {
return 'curso{title: $title, entidad: $entidad, categoria: $categoria, emision: $emision, imgcourse: $imgcourse, urlcourse: $urlcourse, idioma: $idioma, duracion: $duracion, description: $description}';
}
}
this is how i call
void saveCourseFavSP(String title,String entidad,String categoria,String emision,String imgcourse,String urlcourse,String idioma,String duracion,String description) async {
//init sharedpreferences
SharedPreferences cursosFav = await SharedPreferences.getInstance();
//object variable to load the info
final testCursoFav = curso(
title: title,
entidad: entidad,
categoria: categoria,
emision: emision,
imgcourse: imgcourse,
urlcourse: urlcourse,
idioma: idioma,
duracion: duracion,
description: description);
String json = jsonEncode(testCursoFav);
print("generating json $json");
//sending all items object to sharedPreferences
cursosFav.setString('coursesFavorites', json);
//here i want to insert String to List<Strin>
//sending String to something like .upperCase
//but i dont know how to parse and how to read
List<String> lista = jsonDecode(json);
}
loadDataCursosFavSP() async {
SharedPreferences cursosFav = await SharedPreferences.getInstance();
String? json = cursosFav.getString("coursesFavorites");
print("datos de curso favorito cargados:\n $json");
if (json == null) {
print("Items doesn't exist");
} else {
Map<String, dynamic> map = jsonDecode(json);
final cursofav = curso.fromMap(map);
print(
"titulo fav: ${cursofav.title}, ${cursofav.entidad},${cursofav.emision},");
}
}
clearDataCursosFavSP() async {
SharedPreferences cursosFav = await SharedPreferences.getInstance();
cursosFav.clear();
print("ALL ITEMS LIST ARE DELETED");
}