Skip to main content
PESDK/Flutter/Concepts

Architecture

PhotoEditor SDK for Flutter provides dozens of customizations, a versatile image processing section as well as a powerful rendering engine.

PhotoEditor SDK for Flutter depends on the native counterparts for iOS and Android and acts as a bridging layer between your Flutter application and the native SDKs. Therefore, you get true native performance for your image editing process.

Architecture#

The photo_editor_sdk module architecture consists of three major parts interacting to deliver the best performance:

Flutter PESDK#

The PESDK class is the main entry point for the module. It contains all of the invokable static functions to interact with the PhotoEditor SDK. Thus, you can open the editor using PESDK.openEditor and unlock the SDK with your license using PESDK.unlockWithLicense.

For further information on how to get started with the PESDK class please refer to the Getting Started section.

Flutter Configuration#

The Configuration class allows you to apply all kinds of customizations to the PhotoEditor SDK - from adding custom assets over changing the available tools to customizing each of the individual tools to better fit your personal use case. This class is part of the shared imgly_sdk plugin which both photo_editor_sdk as well as video_editor_sdk depend on. For further reference on the capabilities of the Configuration, please have a look at our Configuration section.

Native module#

On the other side of the Flutter plugin are the native iOS and Android modules. These retrieve the requests from the PESDK methods and process them to interact with the native iOS/Android PhotoEditor SDK before handling and sending back the export result.

Restrictions#

With this architecture, you can use the full native performance. However, there is also a downside to this: UI Customization. While we provide a lot of customization options as described above, most of the UI customizations can not be done directly from Flutter as the UI is written natively in Swift/Objective-C and Kotlin/Java instead of Flutter widgets. This said, you can still enjoy all of the native UI customization capabilities, however, they still need to be implemented natively as well. For further references on UI customizations, please have a look at our dedicated User Interface section.