1
votes

Puis-je mettre une liste dans SharedPreferences dans Flutter?

Puis-je placer un objet ArrayList ou List dans SharedPreferences dans Flutter? Parce que je viens de réaliser que le flutter n'a pas gson dans leur fléchette

Donc ... je veux enregistrer comme des livres préférés en appuyant sur l'icône étoile, et lorsque j'appuie dessus, ces livres seront enregistrés dans sharedPreferences.

et je peux voir la liste de mes livres préférés.


1 commentaires

salut! Bienvenue à SO. Veuillez consulter stackoverflow.com/help/how-to-ask et stackoverflow.com/help/mcve


3 Réponses :


10
votes

Sauvegarder:

var yourList = prefs.getStringList('key');

Récupérer:

prefs.setStringList('key', yourList);


7 commentaires

alors ,, puis-je mettre plus de variable int dans un seul ID?


J'ai mis à jour le code, faites-moi savoir si cela répond à vos besoins.


signifie que je ne peux mettre qu'un seul livre préféré monsieur?


Dans Flutter, nous n'avons pas ArrayList , nous avons juste List . Vous devriez pouvoir l'enregistrer tant qu'il s'agit d'une liste de String .


J'obtiens cette erreur La méthode «setStringList» a été appelée sur null. Receiver: null Tentative d'appel: setStringList ("list", Instance (length: 9) of '_GrowableList')


@kirubhasankar Vous devez initialiser votre objet SharedPreferences , ce que je n'ai pas fait dans cet exemple de code. Voici une solution sur la façon d'initialiser un objet SharedPreferences


Ça a marché. tu as économisé mon temps, merci @ CopsOnRoad



0
votes

Par ArrayList si vous voulez dire la structure de données List de Flutter, vous ne pouvez enregistrer que List dans SharedPreference en utilisant cette méthode:

List<String> getStringList(String key)

Et vous pouvez récupérer la liste avec:

Future <bool> setStringList(String key, List<String> value)

Pour plus d'informations sur shared_preferences, consultez cet article.

Quelques conseils gratuits: SharedPreferences sont destinés à enregistrer les données qui sont dans une paire clé-valeur et sont liées aux paramètres de l'utilisateur. Il ne devrait pas enregistrer de données complexes comme la liste des objets personnalisés.

Si vous avez besoin de stocker des données plus complexes que cela, envisagez d'utiliser SQLite.


2 commentaires

Pourquoi les préférences partagées ne devraient pas enregistrer de données complexes comme la liste des objets personnalisés ??


Il a été conçu pour enregistrer les préférences de l'utilisateur, il est donc essentiellement conçu pour enregistrer des paires clé / valeur comme clé: Valeur "Thème": "Dark" et etc. etc. pour une structure plus complexe, vous devriez utiliser des bases de données comme sqflite, moor ou no Bases de données SQL comme Hive. vous pouvez toujours sérialiser les données et les stocker dans SharedPreferences, mais ce n'est pas parce que vous êtes autorisé à le faire que vous devriez le faire. Je dirais optez pour la ruche si vous souhaitez enregistrer des données complexes.



0
votes
import 'package:shared_preferences/shared_preferences.dart';
 
class MySharedPreferences {
  MySharedPreferences._privateConstructor();
 
  static final MySharedPreferences instance =
      MySharedPreferences._privateConstructor();
 
  setListData(String key, List<String> value) async {
    SharedPreferences myPrefs = await SharedPreferences.getInstance();
    myPrefs.setStringList(key, value);
  }
 
  Future<List<String>> getListData(String key) async {
    SharedPreferences myPrefs = await SharedPreferences.getInstance();
    return myPrefs.getStringList(key);
  }
 
}
For more reference: Flutter Shared Preferences Tutorial

0 commentaires