Was macht flutter-working-with-databases?
Verwaltet lokale Datenpersistenz mit SQLite oder anderen Datenbanklösungen. Verwenden Sie dies, wenn eine Flutter-App große Mengen strukturierter Daten auf dem Gerät speichern, abfragen oder synchronisieren muss.
Einführung
Dieses Skill-Dokument beschreibt, wie Sie lokale Datenbanken in einer Flutter-Anwendung einrichten und verwenden können. Es konzentriert sich auf SQLite mit dem sqflite-Paket, geht aber auch auf Alternativen wie hive oder drift ein.
Voraussetzungen
- Flutter SDK installiert
- Ein Flutter-Projekt
- Hinzufügen der Abhängigkeit
sqflitezurpubspec.yaml-Datei:sqflite: ^2.3.0 - Für iOS: Fügen Sie
libsqlite3.tbdzu Ihrem Linker-Framework hinzu (wird automatisch erkannt)
Datenbank initialisieren
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
final database = openDatabase(
join(await getDatabasesPath(), 'my_database.db'),
onCreate: (db, version) {
return db.execute(
'CREATE TABLE dogs(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)',
);
},
version: 1,
);
CRUD-Operationen durchführen
Create (Erstellen)
Future<void> insertDog(Database db, Dog dog) async {
await db.insert(
'dogs',
dog.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
Read (Lesen)
Future<List<Dog>> dogs(Database db) async {
final List<Map<String, dynamic>> maps = await db.query('dogs');
return List.generate(maps.length, (i) {
return Dog(
id: maps[i]['id'],
name: maps[i]['name'],
age: maps[i]['age'],
);
});
}
Update (Aktualisieren)
Future<void> updateDog(Database db, Dog dog) async {
await db.update(
'dogs',
dog.toMap(),
where: 'id = ?',
whereArgs: [dog.id],
);
}
Delete (Löschen)
Future<void> deleteDog(Database db, int id) async {
await db.delete(
'dogs',
where: 'id = ?',
whereArgs: [id],
);
}
Datenbank schließen
await database.close();
Alternatives: Drift (ehemals Moor)
Drift ist ein modernes Flutter-Datenbank-Paket, das Codegenerierung und typsichere Abfragen bietet.
dependencies:
drift: ^2.11.0
sqlite3_flutter_libs: ^0.5.0
path_provider: ^2.0.0
path: ^1.8.0
dev_dependencies:
drift_dev: ^2.11.0
build_runner: ^2.4.0
Wichtige Hinweise
- Verwenden Sie
isolatesfür große Datenmengen, um die UI nicht zu blockieren. - Für komplexe Abfragen nutzen Sie
rawQuery. - Sichern Sie Ihre Datenbank regelmäßig, z. B. mit Methoden aus dem
sqflite-Paket.