import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:path/path.dart'; import '../models/product.dart'; class DatabaseHelper { static final DatabaseHelper _instance = DatabaseHelper._internal(); static Database? _database; factory DatabaseHelper() { return _instance; } DatabaseHelper._internal(); Future get database async { if (_database != null) { return _database!; } _database = await _initDatabase(); return _database!; } Future _initDatabase() async { String documentsDirectory = await getDatabasesPath(); String path = join(documentsDirectory, 'product_database.db'); return await openDatabase(path, version: 1, onCreate: _onCreate); } Future _onCreate(Database db, int version) async { await db.execute(''' CREATE TABLE products( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, code TEXT NOT NULL, quantity INTEGER NOT NULL, price REAL NOT NULL, description TEXT ) '''); } Future insertProduct(Product product) async { final db = await database; return await db.insert( 'products', product.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, ); } Future> getProducts() async { final db = await database; final List> maps = await db.query('products'); return List.generate(maps.length, (i) { return Product.fromMap(maps[i]); }); } Future updateProduct(Product product) async { final db = await database; return await db.update( 'products', product.toMap(), where: 'id = ?', whereArgs: [product.id], ); } Future deleteProduct(int id) async { final db = await database; return await db.delete('products', where: 'id = ?', whereArgs: [id]); } }