Intoduzione a Drift in Flutter
Drift è una libreria per Dart e Flutter per la gestione di un database locale; all'interno la libreria usa SQLite
In questo articolo vediamo una introduzione al suo utilizzo.
Cominciamo con l'installare queste dipendenze:
dependencies:
drift: ^2.2.0
sqlite3_flutter_libs: ^0.5.0
path_provider: ^2.0.0
path: ^1.8.2
dev_dependencies:
drift_dev: ^2.2.0+1
build_runner: ^2.2.1
A questo punto create un file Dart chiamandolo come volete (io l'ho chiamato generadb.dart); qui dentro ci metteremo il codice che genererà il db e le varie classi di cui ha bisogno:
import 'dart:io';
import 'package:path/path.dart' as p;
import 'package:drift/drift.dart';
import 'package:drift/native.dart';
import 'package:path_provider/path_provider.dart';
part 'generadb.g.dart';
class Persone extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get nome => text()();
}
@DriftDatabase(tables: [Persone])
class GestioneDb extends _$GestioneDb {
GestioneDb() : super(_openConnection());
@override
int get schemaVersion => 1;
}
LazyDatabase _openConnection() {
return LazyDatabase(() async {
final dbFolder = await getApplicationDocumentsDirectory();
final file = File(p.join(dbFolder.path, 'db.sqlite'));
return NativeDatabase(file);
});
}
L'IDE vi darà sicuramente errore, in quanto dobbiamo ancora generare le varie classi.
Prima di lanciare il progetto, date questo comando:
flutter pub run build_runner build
Verrà creato il file generadb.g.dart con dentro tutto il necessario.
Adesso non dovreste avere più errori, e siete pronti per usare il db:
onPressed: () async {
final db = GestioneDb();
await db
.into(db.persone)
.insert(PersoneCompanion.insert(nome: "Matteo"));
final allPersone = await db.select(db.persone).get();
print(allPersone);
},
Io ho messo tutto il codice nel button per convenienza di esempio.
Enjoy!
flutter dart database drift sqllite
Commentami!