import 'dart:io'; import 'package:flutter/services.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart' as sqflite_ffi; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; class WorkDatabase { static final WorkDatabase instance = WorkDatabase._init(); late Database _database; WorkDatabase._init() { sqflite_ffi.sqfliteFfiInit(); } Future initDatabase() async { _database = await _initDB('work.db'); await _createDB(_database, 1); } Future get database async { if (_database.isOpen) return _database; _database = await _initDB('work.db'); return _database; } Future _initDB(String filePath) async { // Obtenez le répertoire de stockage local de l'application final documentsDirectory = await getApplicationDocumentsDirectory(); final path = join(documentsDirectory.path, filePath); // Vérifiez si le fichier de base de données existe déjà dans le répertoire de stockage local bool dbExists = await File(path).exists(); if (!dbExists) { // Si le fichier n'existe pas, copiez-le depuis le dossier assets/database ByteData data = await rootBundle.load('assets/database/$filePath'); List bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes); await File(path).writeAsBytes(bytes); } // Ouvrez la base de données return await databaseFactoryFfi.openDatabase(path); } Future _createDB(Database db, int version) async { await db.execute(''' CREATE TABLE IF NOT EXISTS work ( id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT ) '''); } Future insertDate(String date) async { final db = await database; final existingDates = await db.query('work', where: 'date = ?', whereArgs: [date]); if (existingDates.isNotEmpty) { // Date already exists, return 0 to indicate no new insertion return 0; } return await db.insert('work', {'date': date}); } /*Future> getDates() async { final db = await database; final result = await db.query('work'); return result.map((json) => Work.fromJson(json)).toList(); }*/ Future> getDates() async { final db = await database; final result = await db.query('work'); return List.generate( result.length, (index) => result[index]['date'] as String); } // recuperer les dates par ordre du plus recent au plus ancien Future> getDatesDesc() async { final db = await database; final result = await db.query('work', orderBy: 'date DESC'); return List.generate( result.length, (index) => result[index]['date'] as String); } }