Comment utiliser SQLite dans Flutter
Comment utiliser SQLite dans Flutter
-
Présentation
- SQLite dans Flutter peut être utilisé pour conserver les données dans les applications Android et iOS. Dans ce tutoriel, nous allons créer une application simple pour enregistrer des données dans des listes telles qu’une liste d’épicerie.
-
Rappel : Notions de Classes et POO
- Une classe Dart possède exactement la même structure qu’une classe Java:
- Déclaration à l’aide l’instruction
class
- Déclaration des attributs à l’aide des mots clé:
String
,int
,var
,final
… - Déclaration du constructeur sous le même nom de la classe.
- Affectation des paramètres aux attributs via l’instruction
this
. - Instanciation via la commande
new
class Personne {
String name ;
int age ;
// constructeur de la classe
Personne(this.name , this.age);
}void main() {
var pers = new Personne("Mohamed", 23);
print("${pers.name} est agé de ${pers.age} ans !");
// Affiche: Mohamed est agé de 27 ans !
}
-
Ajouter la dépendance
SQLite
dans Flutter - SQLite est une base de données relationnelle open source qui peut être utilisée pour stocker et manipuler des données comme ajouter, supprimer et supprimer des données.
- Il ne nécessite pas de serveur ou de code back-end et toutes les données sont enregistrées dans un fichier texte sur l’appareil.
-
Étape 1: Ajoutez-le package
sqflite
àpubspec.yaml
- Pour récupérer le package
sqflite
, il faut modifier le fichierpubspec.yaml
. - Dans le fichier
pubspec.yaml
de votre projet, ajoutez la dépendance SQLite à la section dependencies : Path_provider
permet de trouver les chemins ou emplacements couramment utilisés sur le système de fichiers.Path
est utile dans les opérations permettant la manipulation de chemins ou d’emplacements.- Ensuite, exécutez
flutter pub get
dans le terminal pour installer la dépendance. - Vous pouvez trouver les versions actuelles de ces packages ici :
-
Étape 1: Importez-le package
sqflite
- Assurez-vous d’avoir importé les packages dans le fichier que vous souhaitez utiliser
-
Création de la base de données et des tables
- Lorsque vous souhaitez stocker les informations d’un modèle dans la table nouvellement créée, vous devez d’abord définir ces modèles.
- Dans le dossier lib de votre projet, créez un nouveau fichier (par exemple, database_helper.dart) pour gérer la création et la manipulation de la base de données. Importez les paquets nécessaires :
- Créez une classe pour gérer la base de données :
- Par exemple, lors de la définition d’une catégorie de chat, les données de chaque chat contiendront trois champs : un identifiant unique ; nom; âge.
-
Utilisation de la base de données dans votre application
- Avant d’être prêt à lire et à écrire des données dans la base de données, vous devez d’abord ouvrir la base de données. L’ouverture d’une base de données comporte deux étapes :
- Utilisez la méthode
getDatabasesPath
dans le packagesqflite
et coopérez avec la méthode join dans le package path pour définir le chemin d’accès à la base de données. - Ouvrez la base de données avec la fonction
openDatabase()
desqflite
. - Utiliser la méthode
openDatabase
dans le packagesqflite
pour ouvrir la base de données
dependencies:
flutter:
sdk: flutter
path_provider: ^2.1.0
path: ^1.6.4
sqflite: ^2.3.0
ou tapez:
flutter pub upgrade --major-versions
import 'dart:async';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class DatabaseHelper {
static Database? _database;
Future get database async {
if (_database != null) {
return _database!;
}
_database = await _initDatabase();
return _database!;
}
Future _initDatabase() async {
final path = join(await getDatabasesPath(), 'your_database.db');
return await openDatabase(
path,
version: 1,
onCreate: _createTables,
);
}
Future _createTables(Database db, int version) async {
await db.execute('''
CREATE TABLE your_table (
id INTEGER PRIMARY KEY,
name TEXT,
// ... other columns
)
''');
}
// Add methods to insert, update, delete, and query data
}
class Cat {
final int id;
final String name;
final int age;
Cat({
required this.id,
required this.name,
required this.age,
});
}
// Avoid errors caused by flutter upgrade.
// Importing 'package:flutter/widgets.dart' is required.
WidgetsFlutterBinding.ensureInitialized();
// Open the database and store the reference.
final database = openDatabase(
// Set the path to the database. Note: Using the `join` function from the
// `path` package is best practice to ensure the path is correctly
// constructed for each platform.
join(await getDatabasesPath(), ‘cat_database.db'),
);