init static method
Future<void>
init({
- Map<
int, List< ? userBookmarks,BookmarkModel> > - bool overwriteBookmarks = false,
init تقوم بتهيئة القرآن ويجب استدعاؤها قبل البدء في استخدام الحزمة
init initializes the FlutterQuran, and must be called before starting using the package
Implementation
static Future<void> init(
{Map<int, List<BookmarkModel>>? userBookmarks,
bool overwriteBookmarks = false}) async {
if (_isInitialized) return;
await GetStorage.init();
// تهيئة backend الصوت للويندوز قبل إنشاء أي AudioPlayer
// Initialize Windows audio backend before constructing any AudioPlayer
if (!kIsWeb) {
if (Platform.isWindows) {
JustAudioMediaKit.ensureInitialized(windows: true);
}
}
// Initialize state values
final storage = GetStorage();
final storageConstants = _StorageConstants();
/// Initialize SurahAudioController
QuranCtrl.instance;
await _initTafsir();
quranCtrl.state.isFontDownloaded.value =
storage.read(storageConstants.isDownloadedCodeV4Fonts) ?? false;
quranCtrl.state.isBold.value =
storage.read(storageConstants.isBold) ?? false;
quranCtrl.state.fontsSelected.value =
storage.read(storageConstants.fontsSelected) ?? 0;
quranCtrl.state.fontsDownloadedList.value = (storage
.read<List<dynamic>>(storageConstants.fontsDownloadedList)
?.cast<int>() ??
[]);
if (!kIsWeb) {
QuranCtrl.instance.deleteOldFonts();
}
// Load data in parallel
final futures = <Future<void>>[
QuranCtrl.instance.loadQuranDataV1(),
QuranCtrl.instance.loadQuranDataV3(),
QuranCtrl.instance.fetchSurahs(),
];
await Future.wait<void>(futures);
/// must be initilized after QuranCtrl, because it uses it
AudioCtrl.instance;
// تسجيل الخطوط المحفوظة دفعة واحدة في الخلفية إن كانت متاحة
// if (kIsWeb) {
// // على الويب: لا تنزيلات مسبقة. سجّل فقط الصفحات التي تم تحميلها سابقًا (إن وُجدت)
// final stored = storage
// .read<List<dynamic>>(storageConstants.loadedFontPages)
// ?.cast<int>() ??
// const <int>[];
// if (stored.isNotEmpty) {
// Future(() => QuranCtrl.instance
// .loadPersistedFontsBulk(pages: stored, batchSize: 16));
// }
// } else if (quranCtrl.state.isFontDownloaded.value) {
// // على المنصات الأخرى: سجّل الصفحات المحفوظة فقط (دع الدالة تقرأ من التخزين)
// QuranCtrl.instance.loadPersistedFontsBulk();
// }
// Initialize bookmarks
BookmarksCtrl.instance.initBookmarks(
userBookmarks: userBookmarks, overwrite: overwriteBookmarks);
_isInitialized = true;
}