Data Persistence with SQLite |
Flutter
Chaque fois que vous devez stocker les données sur le local, vous
devez utiliser SQLite pour conserver les données utilisateur.
Pourquoi utilisons-nous SQLite?
SQLite est un choix populaire en tant que logiciel de base de
données intégré pour le stockage local / client dans des
logiciels d'application tels que les navigateurs Web.
Comment utiliser SQLite en flutter?
Avant d'utiliser SQLite, vous devez savoir que
SQLite n'est pas disponible dans un SDK Flutter comme
Android mais nous avons un plugin sqflite qui effectue
exactement toutes les opérations sur la base de données comme
dans Android et iOS.
Le plugin Flutter est le wrapper du code natif écrit en Kotlin
ou java pour Android et swift ou objective-c pour iOS.
PS: le plugin peut également être créé uniquement avec le code
DART
la mise en oeuvre
Étape 1: ajouter les dépendances
Ajoutez des dépendances au fichier [Link].
sqflite:
path_provider :
Pour travailler avec des bases de données SQLite, importez
les packages sqfliteetpath
Le sqflitepackage fournit des classes et des fonctions qui
vous permettent d'interagir avec une base de données
SQLite.
Le path_providerpackage fournit des fonctions qui vous
permettent de définir correctement l'emplacement de
stockage de la base de données sur le disque,
comme TemporaryDirectory et ApplicationDocumentsDirectory.
Étape 2: créer une classe modèle
SQLite crée une table pour la classe modèle, les champs de la
classe correspondent aux colonnes de la table. Par conséquent,
les classes ont tendance à être de petites classes de modèle qui
ne contiennent aucune logique. Notre Personclasse représente le
modèle des données de la base de données.
classe Person {
int id;
Nom de chaîne;
Ville de chaîne;
Personne ({ ce .id, ce .name, ce .ville});}
Si nous voulons insérer dans la base de données, nous devons
convertir le Personen unMap
Mappez <String, dynamic > toMap () => {
"id": id,
"name": name,
"city": city,
};
et si nous voulons récupérer à partir de la base de données, nous
devons convertir le Map dans lePerson
factory [Link] (Map <String, dynamic > json) => new
Person (
id: json ["id"],
nom: json ["name"],
ville: json ["city"],
);
Voici à quoi ressemblera notre classe PODO
Étape 3: créer une base de données
Nous créerons une classe distincte en tant que [Link]
pour rendre le code plus modulaire et ajouter toutes les
méthodes requises pour la gestion de la base de données qui
peuvent être accessibles n'importe où dans l'application.
Créer une classe DatabaseProvider
class PersonDatabaseProvider {
DatabaseProvider ._ ();
statique finale PersonDatabaseProvider db =
PersonDatabaseProvider ._ ();
}
Étape 4: ouvrez la base de données
Avant de lire et d'écrire des données dans la base de données,
vous devez ouvrir une connexion à la base de données. Cela
implique deux étapes:
1. Définissez le chemin d'accès au fichier de base de données
en utilisant getDatabasesPathle sqflitepackage du combiné
avec la pathfonction du pathpackage
2. Ouvrez la base de données avec la openDatabasefonction
desqflite
Répertoire du répertoire = attendre
getApplicationDocumentsDirectory ();String path = join
([Link], "[Link]");final Future <Database> database =
openDatabase (chemin);
Étape 5: créer la table
vous devez créer une table pour stocker des informations.
Par exemple, dans notre cas, nous créons une table
appelée Personqui définit les données qui peuvent être
stockées. Dans ce cas, chacun Personcontient
une id, nameet city. Par conséquent, ceux-ci seront représentés
sous forme de trois colonnes dans le Persontableau.
1. Il ids'agit d'un Dart intet sera stocké en tant
que INTEGERtype de données SQLite. Il est également
recommandé d'utiliser un idcomme clé primaire de la table
pour améliorer les délais de requête et de mise à jour.
2. Le nameest un dard String, et sera stocké en tant
que TEXTSQLite Datatype
3. Le cityest également un Dart String, et sera stocké en tant
que TEXTtype de données
Pour éviter d'ouvrir une connexion à la base de données encore
et encore, nous pouvons utiliser ceci:
Étape 6: gestion des données
Nous allons maintenant vous montrer comment effectuer une
opération sur la base de données SQLite.
Requete:
getAllPersons() renverra toute la personne de la base de données
SQLite si disponible.
Insérer:
Supprimer:
Si vous voyez que nous avons deux méthodes, l'une supprime la
ligne avec un identifiant particulier et l'autre supprime toutes les
données présentes dans le tableau, vous pouvez modifier toutes
les requêtes en fonction de vos besoins.
Mise à jour:
Si ces petits extraits de code vous confondent encore, nous avons
le code complet de la classe de base de données:
Étape 7: Utilisation des données
Afin d'utiliser la base de données, nous devons créer l'instance
de la base de données et utiliser la méthode présente dans la
classe de base de données
DatabaseProvider. db
Cela nous aidera à effectuer une opération sur la base de
données.
comme si nous voulons mettre la personne dans la base de
données, nous utiliserons la méthode que nous avons définie
dans notre classe DatabaseProvider
DatabaseProvider. db .getAllPersons ()
et si je veux l'afficher dans la liste, je vais utiliser FututeBuilder: