decodeImage method

Future<void> decodeImage([
  1. TransformConfigs? transformConfigs
])

Decode the image being edited.

This method decodes the image if it hasn't been decoded yet and updates its properties.

Implementation

Future<void> decodeImage([TransformConfigs? transformConfigs]) async {
  bool shouldImportStateHistory =
      _imageNeedDecode && stateHistoryConfigs.initStateHistory != null;
  _imageNeedDecode = false;
  LoadingDialog? loading;
  if (shouldImportStateHistory && i18n.importStateHistoryMsg.isNotEmpty) {
    loading = LoadingDialog();
    await loading.show(
      context,
      theme: _theme,
      configs: configs,
      message: i18n.importStateHistoryMsg,
    );
  }
  if (!mounted) return;
  _imageInfos = await decodeImageInfos(
    bytes: await editorImage.safeByteArray(context),
    screenSize: Size(
      sizesManager.lastScreenSize.width,
      sizesManager.bodySize.height,
    ),
    configs: transformConfigs ?? stateManager.transformConfigs,
  );
  sizesManager.originalImageSize ??= _imageInfos!.rawSize;
  sizesManager.decodedImageSize = _imageInfos!.renderedSize;

  _inited = true;
  if (!_decodeImageCompleter.isCompleted) {
    _decodeImageCompleter.complete(true);
  }

  if (shouldImportStateHistory) {
    importStateHistory(stateHistoryConfigs.initStateHistory!);
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      await loading?.hide(context);
    });
  }
  if (mounted) setState(() {});
  mainEditorCallbacks?.handleUpdateUI();
}