import 'dart:async'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; import '../models/dog.dart'; class DatabaseClient { Database _db; Future open() async { String dbPath = join(await getDatabasesPath(), 'database.db'); _db = await openDatabase(dbPath, version: 1, onCreate: this._create); } Future _create(Database db, int version) async { await db.execute(""" CREATE TABLE dogs ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER )"""); } Future insertDog(Dog dog) async { await _db.insert('dogs', dog.toMap(), conflictAlgorithm: ConflictAlgorithm.replace); } Future getDog(int id) async { final List> maps = await _db.query('dogs', where: "id = ?", whereArgs: [id], limit: 1); if (maps.length > 0) { return Dog.fromMap(maps[0]); } else { return null; } } Future> getDogs() async { final List> maps = await _db.query('dogs'); return List.generate(maps.length, (i) { return Dog.fromMap(maps[i]); }); } Future updateDog(Dog dog) async { _db.update( 'dogs', dog.toMap(), where: "id = ?", whereArgs: [dog.id], ); } Future deleteDog(int id) async { await _db.delete('dogs', where: "id = ?", whereArgs: [id]); } }