init static method

Future<void> init({
  1. Map<int, List<BookmarkModel>>? userBookmarks,
  2. 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();

  // Initialize state values
  final storage = GetStorage();
  final storageConstants = _StorageConstants();

  /// Initialize SurahAudioController
  QuranCtrl.instance;
  await _initTafsir();

  quranCtrl.state.isDownloadedV2Fonts.value =
      storage.read(storageConstants.isDownloadedCodeV2Fonts) ?? false;
  quranCtrl.state.isBold.value = storage.read(storageConstants.isBold) ?? 0;
  quranCtrl.state.fontsSelected.value =
      storage.read(storageConstants.fontsSelected) ?? 0;
  quranCtrl.state.fontsDownloadedList.value = (storage
          .read<List<dynamic>>(storageConstants.fontsDownloadedList)
          ?.cast<int>() ??
      []);

  // Load data in parallel
  final futures = <Future<void>>[
    QuranCtrl.instance.loadQuran(),
    QuranCtrl.instance.loadFontsQuran(),
    QuranCtrl.instance.fetchSurahs(),
    Future(() async {
      final lastPage = QuranRepository().getLastPage();
      if (lastPage != null) {
        // Handle last page if needed
      }
    }),
  ];

  await Future.wait<void>(futures);

  /// must be initilized after QuranCtrl, because it uses it
  AudioCtrl.instance;

  // Initialize bookmarks
  BookmarksCtrl.instance.initBookmarks(
      userBookmarks: userBookmarks, overwrite: overwriteBookmarks);

  _isInitialized = true;
}