import 'dart:io'; import 'package:drift/drift.dart'; import 'package:drift/native.dart'; import 'package:flutter/services.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; part 'database_service.g.dart'; // Opens a lazy database connection, copying the prebuilt database if needed LazyDatabase _openConnection() { return LazyDatabase(() async { final dbFolder = await getApplicationDocumentsDirectory(); // Get app document directory final file = File(p.join(dbFolder.path, 'hadith_bn_test.db')); // Database file path if (!await file.exists()) { // Copy prebuilt database from assets if not exists final byteData = await rootBundle.load('assets/database/hadith_bn_test.db'); await file.writeAsBytes( byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes), ); } return NativeDatabase.createInBackground(file); // Open database }); } // Main database class using Drift @DriftDatabase() class AppDatabase extends _$AppDatabase { AppDatabase() : super(_openConnection()); @override int get schemaVersion => 1; // Database schema version }