125 votes

Comment sauvegarder sur le stockage local en utilisant Flutter ?

Dans Android, si je dispose des informations que je souhaite faire persister d'une session à l'autre, je sais que je peux utiliser SharedPreferences ou créer une base de données SQLite, voire écrire un fichier sur le périphérique et le lire ultérieurement.

Existe-t-il un moyen d'enregistrer et de restaurer des données de ce type en utilisant uniquement Flutter ? Ou dois-je écrire du code spécifique à chaque appareil pour Android et iOS, comme dans l'application exemple de services ?

141voto

Seth Ladd Points 13589

Il y a quelques options :

1 votes

J'ai écrit un service flutter pour accéder à SQLite, voir github.com/ripple182/FlutterSQLiteSample

0 votes

Est-ce possible si j'utilise Room ? Que se passe-t-il avec ios si j'utilise Room ?

1 votes

Cela semble mieux fonctionner pour les préférences partagées : pub.dev/packages/shared_preferences

65voto

Raouf Rahiche Points 4482

Si vous êtes dans une situation où vous voulez sauvegarder une petite valeur à laquelle vous voulez vous référer plus tard, alors vous devriez stocker vos données en tant que données clé-valeur en utilisant shared_preferences.

mais si vous voulez stocker des données volumineuses, vous devriez utiliser SQLITE.

Cependant, vous pouvez toujours utiliser la base de données Firebase qui est disponible hors ligne.

Puisque nous parlons de stockage local, vous pouvez toujours lire et écrire des fichiers sur le disque.

Autres solutions :

0 votes

Comment décider quand utiliser sqflite ou firebase ?

1 votes

sqflite le stocke uniquement dans le téléphone. firebase est synchronisé dans une base de données centrale où vous pouvez effectuer des requêtes dans votre backend. firebase permet également une synchronisation facile entre les appareils.

0 votes

Veuillez noter que le Firestore de Firebase est réglé par défaut sur 10 Mo et peut être réglé sur un minimum de 1 Mo et un maximum de 100 Mo. L'accès hors ligne pur n'est pas recommandé. Si vous prévoyez de l'utiliser comme une option de stockage local uniquement et que les données sont volumineuses, vous devrez peut-être reconsidérer votre décision. firebase.google.com/docs/reference/Android/com/google/firebase/

13voto

emanuel sanga Points 331

Une réponse tardive mais j'espère qu'elle pourra aider les personnes qui viendront ici plus tard aussi

Je vais fournir des catégories à sauver et leurs meilleures méthodes respectives...

  1. Préférences partagées Utilisez ceci pour stocker des valeurs simples sur le stockage, par exemple le thème de couleur, la langue de l'application, la dernière position de défilement (dans les applications de lecture) il s'agit de paramètres simples que vous souhaitez voir persister lorsque l'application redémarre Vous pouvez toutefois l'utiliser pour stocker des éléments volumineux (listes, cartes, images). mais cela nécessiterait une sérialisation et une désérialisation .. Pour en savoir plus sur la désérialisation et la sérialisation, rendez-vous sur le site suivant ici .
  2. Fichiers Cela aide beaucoup lorsque vous avez des données qui sont définies plus par vous, par exemple des fichiers journaux, des fichiers d'image et peut-être vous voulez exporter des fichiers csv . J'ai entendu dire que ce type de persistance peut être lavé par des nettoyeurs de stockage une fois que le disque manque d'espace Je ne suis pas sûr car je ne l'ai jamais vu Cela peut aussi stocker presque n'importe quoi mais avec l'aide de la sérialisation et de la désérialisation
  3. Sauvegarde dans une base de données Cela est extrêmement utile pour les données un peu complexes. Et je pense que cela n'est pas lavé par les nettoyeurs de disques car c'est stocké dans AppData (pour Android).. Dans celui-ci, vos données sont stockées dans une base de données SQLite. Son plugin est SQFLite . Les types de données que vous pourriez mettre ici sont comme tout ce qui peut être représenté par une base de données.

12voto

Furkan Tektas Points 131

Vous pouvez utiliser préférences partagées à partir des plugins officiels de Flutter. https://github.com/flutter/plugins/tree/master/packages/shared_preferences

Il utilise les préférences partagées pour Android, NSUserDefaults pour iOS.

1 votes

Est-ce l'idéal pour les grandes bases de données ?

1 votes

@temp_ Je ne connais pas bien iOS. Les préférences partagées sur Android, cependant, ne sont définitivement pas adaptées aux grandes bases de données. Elles sont écrites sous forme de fichiers xml simples dans le système de fichiers, et lues depuis le système de fichiers si nécessaire. Elles sont principalement utilisées pour stocker les préférences des applications et autres choses similaires.

0 votes

Cela semble mieux fonctionner pour les préférences partagées : pub.dev/packages/shared_preferences

10voto

George Points 1814

Si vous avez besoin de stocker des valeurs simples comme un jeton d'API ou des données de connexion (pas de mots de passe !), voici ce que j'ai utilisé :

import 'package:shared_preferences/shared_preferences.dart';

asyncFunc() async { // Async func to handle Futures easier; or use Future.then
  SharedPreferences prefs = await SharedPreferences.getInstance();
}
...

// Set
prefs.setString('apiToken', token);

// Get
String token = prefs.getString('apiToken');

// Remove
prefs.remove('apiToken');

N'oubliez pas d'ajouter shared_preferences dans votre pubspec.yaml (conservez le format d'espacement) :

dependencies:

  shared_preferences: any

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X