create static method

Future<EpubearSdk> create(
  1. EpubConfig config
)

Method used to create an instance of epuBear SDK using config.

Implementation

static Future<EpubearSdk> create(EpubConfig config) async {
  EpubearSdk sdk = EpubearSdk._(config);

  if (Platform.isAndroid) {
    epuBearInitAndroid();
  } else if (Platform.isIOS) {
    await epuBearInitIos();
  }

  sdk._setEntity(getSdkEntity());
  createdSdks.add(sdk);

  initArena = Arena();

  Pointer<EpubConfigNative> nativeConfig = initArena.allocate(sizeOf<EpubConfigNative>()).cast();
  nativeConfig.ref.user = BufferString.fromDartString(config.user);
  nativeConfig.ref.info = BufferString.fromDartString(config.info);
  nativeConfig.ref.key = BufferString.fromDartString(config.key);
  nativeConfig.ref.dpi = config.dpi;
  nativeConfig.ref.initializeApiData = NativeApi.initializeApiDLData;
  nativeConfig.ref.messagePort = sdk._createCallbackMessageListener();

  String masterCssString = config.masterCss ?? await rootBundle.loadString('assets/master.css');
  Pointer<BufferString> masterCss = BufferString.fromDartString(masterCssString);

  initSdkNative?.call(sdk._sdk, nativeConfig, masterCss);

  BufferString.destroy(masterCss);

  if (config.fontsPackagePath != null) {
    Pointer<FileData> fontsPackageFile = await _loadAssetAsFile(initArena, 'fonts.pkg');
    initFontsNative?.call(sdk._sdk, fontsPackageFile);
  }

  BufferString.destroy(nativeConfig.ref.user);
  BufferString.destroy(nativeConfig.ref.info);
  BufferString.destroy(nativeConfig.ref.key);

  return sdk;
}