Flutter SharedPreferences ¿cómo cargar todo lo guardado?
Oct 27 2020
¿Cómo puedo cargar todo lo guardado en SharedPreferences?
¡He guardado muchos bools y necesito cargar todos en una lista!
Así es como guardo:
SharedPreferences sharedPreferences;
bool isfavorit;
@override
void initState() {
super.initState();
SharedPreferences.getInstance().then((SharedPreferences sp) {
sharedPreferences = sp;
isfavorit = sharedPreferences.getBool('${widget.id}'); // will be null if never previously saved if (isfavorit == null) { isfavorit = false; persist(isfavorit); // set an initial value } setState(() {}); }); } void persist(bool value) { setState(() { isfavorit = value; }); sharedPreferences?.setBool('${widget.id}', value);
}
Respuestas
1 ArpitAwasthi Oct 27 2020 at 03:30
List<bool> prefList = [];
var sharedPreferences = await SharedPreferences.getInstance();
Set<String> keys = sharedPreferences.getKeys();
for(int i=0; i<keys.length ; i++){
bool value = sharedPreferences.getBool(keys.elementAt(i));
prefList.add(value);
}
Si también tiene un valor no bool en su almacenamiento persistente, debe usar la clave reconocible para almacenar ese valor. Por ejemplo: - sharedPreferences.setBool ('bool $ {widget.id}', valor);
Ahora esta palabra clave especial se puede utilizar para saber si es un valor bool o no
List<bool> prefList = [];
var sharedPreferences = await SharedPreferences.getInstance();
Set<String> keys = sharedPreferences.getKeys();
for(int i=0; i<keys.length ; i++){
if(key.elementAt(i).contains('bool')){
bool value = sharedPreferences.getBool(keys.elementAt(i));
prefList.add(value);
}
}
Editar: - Tienes que usar el código dentro de una función y devolver tu cadena Ejemplo: -
Future<List<bool>> getBoolList() async{
List<bool> prefList = [];
var sharedPreferences = await SharedPreferences.getInstance();
Set<String> keys = sharedPreferences.getKeys();
for(int i=0; i<keys.length ; i++){
bool value = sharedPreferences.getBool(keys.elementAt(i));
prefList.add(value);
}
return prefList;
}
Entonces llama a esta función
List<bool> list = await getBoolList();
Nota: - En palabras simples, solo las funciones asincrónicas le permitirán usar la palabra clave await dentro de ellas, y si devuelven algo, será Future.