decodeImage method
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();
}