Flutter Engine
The Flutter Engine
Classes | Macros | Typedefs | Enumerations | Functions | Variables
embedder.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Classes

struct  FlutterTransformation
 
struct  FlutterOpenGLTexture
 
struct  FlutterOpenGLFramebuffer
 
struct  FlutterSize
 A structure to represent the width and height. More...
 
struct  FlutterUIntSize
 
struct  FlutterRect
 A structure to represent a rectangle. More...
 
struct  FlutterPoint
 A structure to represent a 2D point. More...
 
struct  FlutterRoundedRect
 A structure to represent a rounded rectangle. More...
 
struct  FlutterDamage
 A structure to represent a damage region. More...
 
struct  FlutterFrameInfo
 
struct  FlutterPresentInfo
 
struct  FlutterOpenGLRendererConfig
 
struct  FlutterMetalExternalTexture
 
struct  FlutterMetalTexture
 
struct  FlutterMetalRendererConfig
 
struct  FlutterVulkanImage
 
struct  FlutterVulkanRendererConfig
 
struct  FlutterSoftwareRendererConfig
 
struct  FlutterRendererConfig
 
struct  FlutterWindowMetricsEvent
 
struct  FlutterAddViewResult
 
struct  FlutterAddViewInfo
 
struct  FlutterRemoveViewResult
 
struct  FlutterRemoveViewInfo
 
struct  FlutterPointerEvent
 
struct  FlutterKeyEvent
 
struct  FlutterPlatformMessage
 
struct  FlutterSpellOutStringAttribute
 
struct  FlutterLocaleStringAttribute
 
struct  FlutterStringAttribute
 
struct  FlutterSemanticsNode
 
struct  FlutterSemanticsNode2
 
struct  FlutterSemanticsCustomAction
 
struct  FlutterSemanticsCustomAction2
 
struct  FlutterSemanticsUpdate
 
struct  FlutterSemanticsUpdate2
 A batch of updates to semantics nodes and custom actions. More...
 
struct  FlutterChannelUpdate
 An update to whether a message channel has a listener set or not. More...
 
struct  FlutterTask
 
struct  FlutterTaskRunnerDescription
 
struct  FlutterCustomTaskRunners
 
struct  FlutterOpenGLBackingStore
 
struct  FlutterSoftwareBackingStore
 
struct  FlutterSoftwareBackingStore2
 
struct  FlutterMetalBackingStore
 
struct  FlutterVulkanBackingStore
 
struct  FlutterPlatformViewMutation
 
struct  FlutterPlatformView
 
struct  FlutterBackingStore
 
struct  FlutterBackingStoreConfig
 
struct  FlutterRegion
 A region represented by a collection of non-overlapping rectangles. More...
 
struct  FlutterBackingStorePresentInfo
 
struct  FlutterLayer
 
struct  FlutterPresentViewInfo
 
struct  FlutterCompositor
 
struct  FlutterLocale
 
struct  FlutterEngineDisplay
 
struct  FlutterEngineDartBuffer
 
struct  FlutterEngineDartObject
 
struct  FlutterEngineAOTDataSource
 
struct  FlutterProjectArgs
 
struct  FlutterEngineProcTable
 Function-pointer-based versions of the APIs above. More...
 

Macros

#define FLUTTER_EXPORT
 
#define FLUTTER_API_SYMBOL(symbol)   symbol
 
#define FLUTTER_ENGINE_VERSION   1
 

Typedefs

typedef struct _FlutterEngineFLUTTER_API_SYMBOL(FlutterEngine)
 
typedef int64_t FlutterViewId
 
typedef void(* VoidCallback) (void *)
 
typedef bool(* BoolCallback) (void *)
 
typedef FlutterTransformation(* TransformationCallback) (void *)
 
typedef uint32_t(* UIntCallback) (void *)
 
typedef bool(* SoftwareSurfacePresentCallback) (void *, const void *, size_t, size_t)
 
typedef void *(* ProcResolver) (void *, const char *)
 
typedef bool(* TextureFrameCallback) (void *, int64_t, size_t, size_t, FlutterOpenGLTexture *)
 
typedef void(* VsyncCallback) (void *, intptr_t)
 
typedef void(* OnPreEngineRestartCallback) (void *)
 
typedef uint32_t(* UIntFrameInfoCallback) (void *, const FlutterFrameInfo *)
 Callback for when a frame buffer object is requested. More...
 
typedef void(* FlutterFrameBufferWithDamageCallback) (void *, const intptr_t, FlutterDamage *)
 
typedef bool(* BoolPresentInfoCallback) (void *, const FlutterPresentInfo *)
 Callback for when a surface is presented. More...
 
typedef const void * FlutterMetalDeviceHandle
 Alias for id<MTLDevice>. More...
 
typedef const void * FlutterMetalCommandQueueHandle
 Alias for id<MTLCommandQueue>. More...
 
typedef const void * FlutterMetalTextureHandle
 Alias for id<MTLTexture>. More...
 
typedef bool(* FlutterMetalTextureFrameCallback) (void *, int64_t, size_t, size_t, FlutterMetalExternalTexture *)
 
typedef FlutterMetalTexture(* FlutterMetalTextureCallback) (void *, const FlutterFrameInfo *)
 Callback for when a metal texture is requested. More...
 
typedef bool(* FlutterMetalPresentCallback) (void *, const FlutterMetalTexture *)
 
typedef void * FlutterVulkanInstanceHandle
 Alias for VkInstance. More...
 
typedef void * FlutterVulkanPhysicalDeviceHandle
 Alias for VkPhysicalDevice. More...
 
typedef void * FlutterVulkanDeviceHandle
 Alias for VkDevice. More...
 
typedef void * FlutterVulkanQueueHandle
 Alias for VkQueue. More...
 
typedef uint64_t FlutterVulkanImageHandle
 Alias for VkImage. More...
 
typedef void *(* FlutterVulkanInstanceProcAddressCallback) (void *, FlutterVulkanInstanceHandle, const char *)
 
typedef FlutterVulkanImage(* FlutterVulkanImageCallback) (void *, const FlutterFrameInfo *)
 Callback for when a VkImage is requested. More...
 
typedef bool(* FlutterVulkanPresentCallback) (void *, const FlutterVulkanImage *)
 
typedef uint64_t FlutterEngineDisplayId
 
typedef void(* FlutterAddViewCallback) (const FlutterAddViewResult *result)
 
typedef void(* FlutterRemoveViewCallback) (const FlutterRemoveViewResult *)
 
typedef void(* FlutterKeyEventCallback) (bool, void *)
 
typedef struct _FlutterPlatformMessageResponseHandle FlutterPlatformMessageResponseHandle
 
typedef void(* FlutterPlatformMessageCallback) (const FlutterPlatformMessage *, void *)
 
typedef void(* FlutterDataCallback) (const uint8_t *, size_t, void *)
 
typedef int64_t FlutterPlatformViewIdentifier
 
typedef void(* FlutterUpdateSemanticsNodeCallback) (const FlutterSemanticsNode *, void *)
 
typedef void(* FlutterUpdateSemanticsCustomActionCallback) (const FlutterSemanticsCustomAction *, void *)
 
typedef void(* FlutterUpdateSemanticsCallback) (const FlutterSemanticsUpdate *, void *)
 
typedef void(* FlutterUpdateSemanticsCallback2) (const FlutterSemanticsUpdate2 *, void *)
 
typedef void(* FlutterChannelUpdateCallback) (const FlutterChannelUpdate *, void *)
 
typedef struct _FlutterTaskRunnerFlutterTaskRunner
 
typedef void(* FlutterTaskRunnerPostTaskCallback) (FlutterTask, uint64_t, void *)
 
typedef bool(* FlutterBackingStoreCreateCallback) (const FlutterBackingStoreConfig *config, FlutterBackingStore *backing_store_out, void *user_data)
 
typedef bool(* FlutterBackingStoreCollectCallback) (const FlutterBackingStore *renderer, void *user_data)
 
typedef bool(* FlutterLayersPresentCallback) (const FlutterLayer **layers, size_t layers_count, void *user_data)
 
typedef bool(* FlutterPresentViewCallback) (const FlutterPresentViewInfo *)
 
typedef const FlutterLocale *(* FlutterComputePlatformResolvedLocaleCallback) (const FlutterLocale **, size_t)
 
typedef int64_t FlutterEngineDartPort
 
typedef void(* FlutterNativeThreadCallback) (FlutterNativeThreadType type, void *user_data)
 
typedef void(* FlutterLogMessageCallback) (const char *, const char *, void *)
 
typedef struct _FlutterEngineAOTDataFlutterEngineAOTData
 
typedef FlutterEngineResult(* FlutterEngineCreateAOTDataFnPtr) (const FlutterEngineAOTDataSource *source, FlutterEngineAOTData *data_out)
 
typedef FlutterEngineResult(* FlutterEngineCollectAOTDataFnPtr) (FlutterEngineAOTData data)
 
typedef FlutterEngineResult(* FlutterEngineRunFnPtr) (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
 
typedef FlutterEngineResult(* FlutterEngineShutdownFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef FlutterEngineResult(* FlutterEngineInitializeFnPtr) (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
 
typedef FlutterEngineResult(* FlutterEngineDeinitializeFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef FlutterEngineResult(* FlutterEngineRunInitializedFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef FlutterEngineResult(* FlutterEngineSendWindowMetricsEventFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterWindowMetricsEvent *event)
 
typedef FlutterEngineResult(* FlutterEngineSendPointerEventFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPointerEvent *events, size_t events_count)
 
typedef FlutterEngineResult(* FlutterEngineSendKeyEventFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterKeyEvent *event, FlutterKeyEventCallback callback, void *user_data)
 
typedef FlutterEngineResult(* FlutterEngineSendPlatformMessageFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessage *message)
 
typedef FlutterEngineResult(* FlutterEnginePlatformMessageCreateResponseHandleFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterDataCallback data_callback, void *user_data, FlutterPlatformMessageResponseHandle **response_out)
 
typedef FlutterEngineResult(* FlutterEnginePlatformMessageReleaseResponseHandleFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterPlatformMessageResponseHandle *response)
 
typedef FlutterEngineResult(* FlutterEngineSendPlatformMessageResponseFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
 
typedef FlutterEngineResult(* FlutterEngineRegisterExternalTextureFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 
typedef FlutterEngineResult(* FlutterEngineUnregisterExternalTextureFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 
typedef FlutterEngineResult(* FlutterEngineMarkExternalTextureFrameAvailableFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 
typedef FlutterEngineResult(* FlutterEngineUpdateSemanticsEnabledFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, bool enabled)
 
typedef FlutterEngineResult(* FlutterEngineUpdateAccessibilityFeaturesFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterAccessibilityFeature features)
 
typedef FlutterEngineResult(* FlutterEngineDispatchSemanticsActionFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, uint64_t id, FlutterSemanticsAction action, const uint8_t *data, size_t data_length)
 
typedef FlutterEngineResult(* FlutterEngineOnVsyncFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, intptr_t baton, uint64_t frame_start_time_nanos, uint64_t frame_target_time_nanos)
 
typedef FlutterEngineResult(* FlutterEngineReloadSystemFontsFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef void(* FlutterEngineTraceEventDurationBeginFnPtr) (const char *name)
 
typedef void(* FlutterEngineTraceEventDurationEndFnPtr) (const char *name)
 
typedef void(* FlutterEngineTraceEventInstantFnPtr) (const char *name)
 
typedef FlutterEngineResult(* FlutterEnginePostRenderThreadTaskFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *callback_data)
 
typedef uint64_t(* FlutterEngineGetCurrentTimeFnPtr) ()
 
typedef FlutterEngineResult(* FlutterEngineRunTaskFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterTask *task)
 
typedef FlutterEngineResult(* FlutterEngineUpdateLocalesFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterLocale **locales, size_t locales_count)
 
typedef bool(* FlutterEngineRunsAOTCompiledDartCodeFnPtr) (void)
 
typedef FlutterEngineResult(* FlutterEnginePostDartObjectFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDartPort port, const FlutterEngineDartObject *object)
 
typedef FlutterEngineResult(* FlutterEngineNotifyLowMemoryWarningFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef FlutterEngineResult(* FlutterEnginePostCallbackOnAllNativeThreadsFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterNativeThreadCallback callback, void *user_data)
 
typedef FlutterEngineResult(* FlutterEngineNotifyDisplayUpdateFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDisplaysUpdateType update_type, const FlutterEngineDisplay *displays, size_t display_count)
 
typedef FlutterEngineResult(* FlutterEngineScheduleFrameFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 
typedef FlutterEngineResult(* FlutterEngineSetNextFrameCallbackFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *user_data)
 
typedef FlutterEngineResult(* FlutterEngineAddViewFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterAddViewInfo *info)
 
typedef FlutterEngineResult(* FlutterEngineRemoveViewFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterRemoveViewInfo *info)
 

Enumerations

enum  FlutterEngineResult { kSuccess = 0 , kInvalidLibraryVersion , kInvalidArguments , kInternalInconsistency }
 
enum  FlutterRendererType { kOpenGL , kSoftware , kMetal , kVulkan }
 
enum  FlutterAccessibilityFeature {
  kFlutterAccessibilityFeatureAccessibleNavigation = 1 << 0 , kFlutterAccessibilityFeatureInvertColors = 1 << 1 , kFlutterAccessibilityFeatureDisableAnimations = 1 << 2 , kFlutterAccessibilityFeatureBoldText = 1 << 3 ,
  kFlutterAccessibilityFeatureReduceMotion = 1 << 4 , kFlutterAccessibilityFeatureHighContrast = 1 << 5 , kFlutterAccessibilityFeatureOnOffSwitchLabels = 1 << 6
}
 
enum  FlutterSemanticsAction {
  kFlutterSemanticsActionTap = 1 << 0 , kFlutterSemanticsActionLongPress = 1 << 1 , kFlutterSemanticsActionScrollLeft = 1 << 2 , kFlutterSemanticsActionScrollRight = 1 << 3 ,
  kFlutterSemanticsActionScrollUp = 1 << 4 , kFlutterSemanticsActionScrollDown = 1 << 5 , kFlutterSemanticsActionIncrease = 1 << 6 , kFlutterSemanticsActionDecrease = 1 << 7 ,
  kFlutterSemanticsActionShowOnScreen = 1 << 8 , kFlutterSemanticsActionMoveCursorForwardByCharacter = 1 << 9 , kFlutterSemanticsActionMoveCursorBackwardByCharacter = 1 << 10 , kFlutterSemanticsActionSetSelection = 1 << 11 ,
  kFlutterSemanticsActionCopy = 1 << 12 , kFlutterSemanticsActionCut = 1 << 13 , kFlutterSemanticsActionPaste = 1 << 14 , kFlutterSemanticsActionDidGainAccessibilityFocus = 1 << 15 ,
  kFlutterSemanticsActionDidLoseAccessibilityFocus = 1 << 16 , kFlutterSemanticsActionCustomAction = 1 << 17 , kFlutterSemanticsActionDismiss = 1 << 18 , kFlutterSemanticsActionMoveCursorForwardByWord = 1 << 19 ,
  kFlutterSemanticsActionMoveCursorBackwardByWord = 1 << 20 , kFlutterSemanticsActionSetText = 1 << 21 , kFlutterSemanticsActionFocus = 1 << 22
}
 
enum  FlutterSemanticsFlag {
  kFlutterSemanticsFlagHasCheckedState = 1 << 0 , kFlutterSemanticsFlagIsChecked = 1 << 1 , kFlutterSemanticsFlagIsSelected = 1 << 2 , kFlutterSemanticsFlagIsButton = 1 << 3 ,
  kFlutterSemanticsFlagIsTextField = 1 << 4 , kFlutterSemanticsFlagIsFocused = 1 << 5 , kFlutterSemanticsFlagHasEnabledState = 1 << 6 , kFlutterSemanticsFlagIsEnabled = 1 << 7 ,
  kFlutterSemanticsFlagIsInMutuallyExclusiveGroup = 1 << 8 , kFlutterSemanticsFlagIsHeader = 1 << 9 , kFlutterSemanticsFlagIsObscured = 1 << 10 , kFlutterSemanticsFlagScopesRoute = 1 << 11 ,
  kFlutterSemanticsFlagNamesRoute = 1 << 12 , kFlutterSemanticsFlagIsHidden = 1 << 13 , kFlutterSemanticsFlagIsImage = 1 << 14 , kFlutterSemanticsFlagIsLiveRegion = 1 << 15 ,
  kFlutterSemanticsFlagHasToggledState = 1 << 16 , kFlutterSemanticsFlagIsToggled = 1 << 17 , kFlutterSemanticsFlagHasImplicitScrolling = 1 << 18 , kFlutterSemanticsFlagIsMultiline = 1 << 19 ,
  kFlutterSemanticsFlagIsReadOnly = 1 << 20 , kFlutterSemanticsFlagIsFocusable = 1 << 21 , kFlutterSemanticsFlagIsLink = 1 << 22 , kFlutterSemanticsFlagIsSlider = 1 << 23 ,
  kFlutterSemanticsFlagIsKeyboardKey = 1 << 24 , kFlutterSemanticsFlagIsCheckStateMixed = 1 << 25 , kFlutterSemanticsFlagHasExpandedState = 1 << 26 , kFlutterSemanticsFlagIsExpanded = 1 << 27
}
 
enum  FlutterTextDirection { kFlutterTextDirectionUnknown = 0 , kFlutterTextDirectionRTL = 1 , kFlutterTextDirectionLTR = 2 }
 
enum  FlutterThreadPriority { kBackground = 0 , kNormal = 1 , kDisplay = 2 , kRaster = 3 }
 Valid values for priority of Thread. More...
 
enum  FlutterOpenGLTargetType { kFlutterOpenGLTargetTypeTexture , kFlutterOpenGLTargetTypeFramebuffer }
 
enum  FlutterSoftwarePixelFormat {
  kFlutterSoftwarePixelFormatGray8 , kFlutterSoftwarePixelFormatRGB565 , kFlutterSoftwarePixelFormatRGBA4444 , kFlutterSoftwarePixelFormatRGBA8888 ,
  kFlutterSoftwarePixelFormatRGBX8888 , kFlutterSoftwarePixelFormatBGRA8888 , kFlutterSoftwarePixelFormatNative32
}
 
enum  FlutterMetalExternalTexturePixelFormat { kYUVA , kRGBA }
 Pixel format for the external texture. More...
 
enum  FlutterMetalExternalTextureYUVColorSpace { kBT601FullRange , kBT601LimitedRange }
 YUV color space for the YUV external texture. More...
 
enum  FlutterPointerPhase {
  kCancel , kUp , kDown , kMove ,
  kAdd , kRemove , kHover , kPanZoomStart ,
  kPanZoomUpdate , kPanZoomEnd
}
 The phase of the pointer event. More...
 
enum  FlutterPointerDeviceKind { kFlutterPointerDeviceKindMouse = 1 , kFlutterPointerDeviceKindTouch , kFlutterPointerDeviceKindStylus , kFlutterPointerDeviceKindTrackpad }
 The device type that created a pointer event. More...
 
enum  FlutterPointerMouseButtons {
  kFlutterPointerButtonMousePrimary = 1 << 0 , kFlutterPointerButtonMouseSecondary = 1 << 1 , kFlutterPointerButtonMouseMiddle = 1 << 2 , kFlutterPointerButtonMouseBack = 1 << 3 ,
  kFlutterPointerButtonMouseForward = 1 << 4
}
 
enum  FlutterPointerSignalKind { kFlutterPointerSignalKindNone , kFlutterPointerSignalKindScroll , kFlutterPointerSignalKindScrollInertiaCancel , kFlutterPointerSignalKindScale }
 The type of a pointer signal. More...
 
enum  FlutterKeyEventType { kFlutterKeyEventTypeUp = 1 , kFlutterKeyEventTypeDown , kFlutterKeyEventTypeRepeat }
 
enum  FlutterKeyEventDeviceType {
  kFlutterKeyEventDeviceTypeKeyboard = 1 , kFlutterKeyEventDeviceTypeDirectionalPad , kFlutterKeyEventDeviceTypeGamepad , kFlutterKeyEventDeviceTypeJoystick ,
  kFlutterKeyEventDeviceTypeHdmi
}
 
enum  FlutterStringAttributeType { kSpellOut , kLocale }
 
enum  FlutterPlatformViewMutationType { kFlutterPlatformViewMutationTypeOpacity , kFlutterPlatformViewMutationTypeClipRect , kFlutterPlatformViewMutationTypeClipRoundedRect , kFlutterPlatformViewMutationTypeTransformation }
 
enum  FlutterBackingStoreType {
  kFlutterBackingStoreTypeOpenGL , kFlutterBackingStoreTypeSoftware , kFlutterBackingStoreTypeMetal , kFlutterBackingStoreTypeVulkan ,
  kFlutterBackingStoreTypeSoftware2
}
 
enum  FlutterLayerContentType { kFlutterLayerContentTypeBackingStore , kFlutterLayerContentTypePlatformView }
 
enum  FlutterEngineDisplaysUpdateType { kFlutterEngineDisplaysUpdateTypeStartup , kFlutterEngineDisplaysUpdateTypeCount }
 
enum  FlutterEngineDartObjectType {
  kFlutterEngineDartObjectTypeNull , kFlutterEngineDartObjectTypeBool , kFlutterEngineDartObjectTypeInt32 , kFlutterEngineDartObjectTypeInt64 ,
  kFlutterEngineDartObjectTypeDouble , kFlutterEngineDartObjectTypeString , kFlutterEngineDartObjectTypeBuffer
}
 
enum  FlutterNativeThreadType { kFlutterNativeThreadTypePlatform , kFlutterNativeThreadTypeRender , kFlutterNativeThreadTypeUI , kFlutterNativeThreadTypeWorker }
 
enum  FlutterEngineAOTDataSourceType { kFlutterEngineAOTDataSourceTypeElfPath }
 AOT data source type. More...
 

Functions

FLUTTER_EXPORT FlutterEngineResult FlutterEngineCreateAOTData (const FlutterEngineAOTDataSource *source, FlutterEngineAOTData *data_out)
 Creates the necessary data structures to launch a Flutter Dart application in AOT mode. The data may only be collected after all FlutterEngine instances launched using this data have been terminated. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineCollectAOTData (FlutterEngineAOTData data)
 Collects the AOT data. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRun (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
 Initialize and run a Flutter engine instance and return a handle to it. This is a convenience method for the pair of calls to FlutterEngineInitialize and FlutterEngineRunInitialized. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineShutdown (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Shuts down a Flutter engine instance. The engine handle is no longer valid for any calls in the embedder API after this point. Making additional calls with this handle is undefined behavior. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineInitialize (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
 Initialize a Flutter engine instance. This does not run the Flutter application code till the FlutterEngineRunInitialized call is made. Besides Flutter application code, no tasks are scheduled on embedder managed task runners either. This allows embedders providing custom task runners to the Flutter engine to obtain a handle to the Flutter engine before the engine can post tasks on these task runners. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineDeinitialize (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Stops running the Flutter engine instance. After this call, the embedder is also guaranteed that no more calls to post tasks onto custom task runners specified by the embedder are made. The Flutter engine handle still needs to be collected via a call to FlutterEngineShutdown. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRunInitialized (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Runs an initialized engine instance. An engine can be initialized via FlutterEngineInitialize. An initialized instance can only be run once. During and after this call, custom task runners supplied by the embedder are expected to start servicing tasks. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineAddView (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterAddViewInfo *info)
 Adds a view. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRemoveView (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterRemoveViewInfo *info)
 Removes a view. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendWindowMetricsEvent (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterWindowMetricsEvent *event)
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPointerEvent (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPointerEvent *events, size_t events_count)
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendKeyEvent (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterKeyEvent *event, FlutterKeyEventCallback callback, void *user_data)
 Sends a key event to the engine. The framework will decide whether to handle this event in a synchronous fashion, although due to technical limitation, the result is always reported asynchronously. The callback is guaranteed to be called exactly once. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPlatformMessage (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessage *message)
 
FLUTTER_EXPORT FlutterEngineResult FlutterPlatformMessageCreateResponseHandle (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterDataCallback data_callback, void *user_data, FlutterPlatformMessageResponseHandle **response_out)
 Creates a platform message response handle that allows the embedder to set a native callback for a response to a message. This handle may be set on the response_handle field of any FlutterPlatformMessage sent to the engine. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterPlatformMessageReleaseResponseHandle (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterPlatformMessageResponseHandle *response)
 Collects the handle created using FlutterPlatformMessageCreateResponseHandle. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPlatformMessageResponse (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
 Send a response from the native side to a platform message from the Dart Flutter application. More...
 
FLUTTER_EXPORT FlutterEngineResult __FlutterEngineFlushPendingTasksNow ()
 This API is only meant to be used by platforms that need to flush tasks on a message loop not controlled by the Flutter engine. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRegisterExternalTexture (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 Register an external texture with a unique (per engine) identifier. Only rendering backends that support external textures accept external texture registrations. After the external texture is registered, the application can mark that a frame is available by calling FlutterEngineMarkExternalTextureFrameAvailable. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineUnregisterExternalTexture (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 Unregister a previous texture registration. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
 Mark that a new texture frame is available for a given texture identifier. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateSemanticsEnabled (FLUTTER_API_SYMBOL(FlutterEngine) engine, bool enabled)
 Enable or disable accessibility semantics. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateAccessibilityFeatures (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterAccessibilityFeature features)
 Sets additional accessibility features. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineDispatchSemanticsAction (FLUTTER_API_SYMBOL(FlutterEngine) engine, uint64_t node_id, FlutterSemanticsAction action, const uint8_t *data, size_t data_length)
 Dispatch a semantics action to the specified semantics node. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineOnVsync (FLUTTER_API_SYMBOL(FlutterEngine) engine, intptr_t baton, uint64_t frame_start_time_nanos, uint64_t frame_target_time_nanos)
 Notify the engine that a vsync event occurred. A baton passed to the platform via the vsync callback must be returned. This call must be made on the thread on which the call to FlutterEngineRun was made. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineReloadSystemFonts (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Reloads the system fonts in engine. More...
 
FLUTTER_EXPORT void FlutterEngineTraceEventDurationBegin (const char *name)
 A profiling utility. Logs a trace duration begin event to the timeline. If the timeline is unavailable or disabled, this has no effect. Must be balanced with an duration end event (via FlutterEngineTraceEventDurationEnd) with the same name on the same thread. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in. More...
 
FLUTTER_EXPORT void FlutterEngineTraceEventDurationEnd (const char *name)
 A profiling utility. Logs a trace duration end event to the timeline. If the timeline is unavailable or disabled, this has no effect. This call must be preceded by a trace duration begin call (via FlutterEngineTraceEventDurationBegin) with the same name on the same thread. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in. More...
 
FLUTTER_EXPORT void FlutterEngineTraceEventInstant (const char *name)
 A profiling utility. Logs a trace duration instant event to the timeline. If the timeline is unavailable or disabled, this has no effect. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostRenderThreadTask (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *callback_data)
 Posts a task onto the Flutter render thread. Typically, this may be called from any thread as long as a FlutterEngineShutdown on the specific engine has not already been initiated. More...
 
FLUTTER_EXPORT uint64_t FlutterEngineGetCurrentTime ()
 Get the current time in nanoseconds from the clock used by the flutter engine. This is the system monotonic clock. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRunTask (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterTask *task)
 Inform the engine to run the specified task. This task has been given to the engine via the FlutterTaskRunnerDescription.post_task_callback. This call must only be made at the target time specified in that callback. Running the task before that time is undefined behavior. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateLocales (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterLocale **locales, size_t locales_count)
 Notify a running engine instance that the locale has been updated. The preferred locale must be the first item in the list of locales supplied. The other entries will be used as a fallback. More...
 
FLUTTER_EXPORT bool FlutterEngineRunsAOTCompiledDartCode (void)
 Returns if the Flutter engine instance will run AOT compiled Dart code. This call has no threading restrictions. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostDartObject (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDartPort port, const FlutterEngineDartObject *object)
 Posts a Dart object to specified send port. The corresponding receive port for send port can be in any isolate running in the VM. This isolate can also be the root isolate for an unrelated engine. The engine parameter is necessary only to ensure the call is not made when no engine (and hence no VM) is running. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineNotifyLowMemoryWarning (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Posts a low memory notification to a running engine instance. The engine will do its best to release non-critical resources in response. It is not guaranteed that the resource would have been collected by the time this call returns however. The notification is posted to engine subsystems that may be operating on other threads. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostCallbackOnAllNativeThreads (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterNativeThreadCallback callback, void *user_data)
 Schedule a callback to be run on all engine managed threads. The engine will attempt to service this callback the next time the message loop for each managed thread is idle. Since the engine manages the entire lifecycle of multiple threads, there is no opportunity for the embedders to finely tune the priorities of threads directly, or, perform other thread specific configuration (for example, setting thread names for tracing). This callback gives embedders a chance to affect such tuning. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineNotifyDisplayUpdate (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDisplaysUpdateType update_type, const FlutterEngineDisplay *displays, size_t display_count)
 Posts updates corresponding to display changes to a running engine instance. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineScheduleFrame (FLUTTER_API_SYMBOL(FlutterEngine) engine)
 Schedule a new frame to redraw the content. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineSetNextFrameCallback (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *user_data)
 Schedule a callback to be called after the next frame is drawn. This must be called from the platform thread. The callback is executed only once from the raster thread; embedders must re-thread if necessary. Performing blocking calls in this callback may introduce application jank. More...
 
FLUTTER_EXPORT FlutterEngineResult FlutterEngineGetProcAddresses (FlutterEngineProcTable *table)
 Gets the table of engine function pointers. More...
 

Variables

FLUTTER_EXPORT const int32_t kFlutterSemanticsNodeIdBatchEnd
 
FLUTTER_EXPORT const int32_t kFlutterSemanticsCustomActionIdBatchEnd
 

Macro Definition Documentation

◆ FLUTTER_API_SYMBOL

#define FLUTTER_API_SYMBOL (   symbol)    symbol

Definition at line 67 of file embedder.h.

◆ FLUTTER_ENGINE_VERSION

#define FLUTTER_ENGINE_VERSION   1

Definition at line 70 of file embedder.h.

◆ FLUTTER_EXPORT

#define FLUTTER_EXPORT

Definition at line 57 of file embedder.h.

Typedef Documentation

◆ BoolCallback

typedef bool(* BoolCallback) (void *)

Definition at line 406 of file embedder.h.

◆ BoolPresentInfoCallback

typedef bool(* BoolPresentInfoCallback) (void *, const FlutterPresentInfo *)

Callback for when a surface is presented.

Definition at line 509 of file embedder.h.

◆ FLUTTER_API_SYMBOL

typedef struct _FlutterEngine * FLUTTER_API_SYMBOL(FlutterEngine)

Definition at line 269 of file embedder.h.

◆ FlutterAddViewCallback

typedef void(* FlutterAddViewCallback) (const FlutterAddViewResult *result)

The callback invoked by the engine when the engine has attempted to add a view.

The |FlutterAddViewResult| is only guaranteed to be valid during this callback.

Definition at line 885 of file embedder.h.

◆ FlutterBackingStoreCollectCallback

typedef bool(* FlutterBackingStoreCollectCallback) (const FlutterBackingStore *renderer, void *user_data)

Definition at line 1871 of file embedder.h.

◆ FlutterBackingStoreCreateCallback

typedef bool(* FlutterBackingStoreCreateCallback) (const FlutterBackingStoreConfig *config, FlutterBackingStore *backing_store_out, void *user_data)

Definition at line 1866 of file embedder.h.

◆ FlutterChannelUpdateCallback

typedef void(* FlutterChannelUpdateCallback) (const FlutterChannelUpdate *, void *)

Definition at line 1544 of file embedder.h.

◆ FlutterComputePlatformResolvedLocaleCallback

typedef const FlutterLocale *(* FlutterComputePlatformResolvedLocaleCallback) (const FlutterLocale **, size_t)

Callback that returns the system locale.

Embedders that implement this callback should return the FlutterLocale from the supported_locales list that most closely matches the user/device's preferred locale.

This callback does not currently provide the user_data baton. https://github.com/flutter/flutter/issues/79826

Definition at line 1967 of file embedder.h.

◆ FlutterDataCallback

typedef void(* FlutterDataCallback) (const uint8_t *, size_t, void *)

Definition at line 1181 of file embedder.h.

◆ FlutterEngineAddViewFnPtr

typedef FlutterEngineResult(* FlutterEngineAddViewFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterAddViewInfo *info)

Definition at line 3311 of file embedder.h.

◆ FlutterEngineAOTData

An opaque object that describes the AOT data that can be used to launch a FlutterEngine instance in AOT mode.

Definition at line 2136 of file embedder.h.

◆ FlutterEngineCollectAOTDataFnPtr

typedef FlutterEngineResult(* FlutterEngineCollectAOTDataFnPtr) (FlutterEngineAOTData data)

Definition at line 3195 of file embedder.h.

◆ FlutterEngineCreateAOTDataFnPtr

typedef FlutterEngineResult(* FlutterEngineCreateAOTDataFnPtr) (const FlutterEngineAOTDataSource *source, FlutterEngineAOTData *data_out)

Definition at line 3192 of file embedder.h.

◆ FlutterEngineDartPort

typedef int64_t FlutterEngineDartPort

Definition at line 2010 of file embedder.h.

◆ FlutterEngineDeinitializeFnPtr

typedef FlutterEngineResult(* FlutterEngineDeinitializeFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3211 of file embedder.h.

◆ FlutterEngineDispatchSemanticsActionFnPtr

typedef FlutterEngineResult(* FlutterEngineDispatchSemanticsActionFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, uint64_t id, FlutterSemanticsAction action, const uint8_t *data, size_t data_length)

Definition at line 3261 of file embedder.h.

◆ FlutterEngineDisplayId

typedef uint64_t FlutterEngineDisplayId

Display refers to a graphics hardware system consisting of a framebuffer, typically a monitor or a screen. This ID is unique per display and is stable until the Flutter application restarts.

Definition at line 839 of file embedder.h.

◆ FlutterEngineGetCurrentTimeFnPtr

typedef uint64_t(* FlutterEngineGetCurrentTimeFnPtr) ()

Definition at line 3281 of file embedder.h.

◆ FlutterEngineInitializeFnPtr

typedef FlutterEngineResult(* FlutterEngineInitializeFnPtr) (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)

Definition at line 3205 of file embedder.h.

◆ FlutterEngineMarkExternalTextureFrameAvailableFnPtr

typedef FlutterEngineResult( * FlutterEngineMarkExternalTextureFrameAvailableFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)

Definition at line 3251 of file embedder.h.

◆ FlutterEngineNotifyDisplayUpdateFnPtr

typedef FlutterEngineResult(* FlutterEngineNotifyDisplayUpdateFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDisplaysUpdateType update_type, const FlutterEngineDisplay *displays, size_t display_count)

Definition at line 3300 of file embedder.h.

◆ FlutterEngineNotifyLowMemoryWarningFnPtr

typedef FlutterEngineResult(* FlutterEngineNotifyLowMemoryWarningFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3294 of file embedder.h.

◆ FlutterEngineOnVsyncFnPtr

typedef FlutterEngineResult(* FlutterEngineOnVsyncFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, intptr_t baton, uint64_t frame_start_time_nanos, uint64_t frame_target_time_nanos)

Definition at line 3267 of file embedder.h.

◆ FlutterEnginePlatformMessageCreateResponseHandleFnPtr

typedef FlutterEngineResult( * FlutterEnginePlatformMessageCreateResponseHandleFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterDataCallback data_callback, void *user_data, FlutterPlatformMessageResponseHandle **response_out)

Definition at line 3230 of file embedder.h.

◆ FlutterEnginePlatformMessageReleaseResponseHandleFnPtr

typedef FlutterEngineResult( * FlutterEnginePlatformMessageReleaseResponseHandleFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterPlatformMessageResponseHandle *response)

Definition at line 3236 of file embedder.h.

◆ FlutterEnginePostCallbackOnAllNativeThreadsFnPtr

typedef FlutterEngineResult(* FlutterEnginePostCallbackOnAllNativeThreadsFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterNativeThreadCallback callback, void *user_data)

Definition at line 3296 of file embedder.h.

◆ FlutterEnginePostDartObjectFnPtr

typedef FlutterEngineResult(* FlutterEnginePostDartObjectFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDartPort port, const FlutterEngineDartObject *object)

Definition at line 3290 of file embedder.h.

◆ FlutterEnginePostRenderThreadTaskFnPtr

typedef FlutterEngineResult(* FlutterEnginePostRenderThreadTaskFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *callback_data)

Definition at line 3277 of file embedder.h.

◆ FlutterEngineRegisterExternalTextureFnPtr

typedef FlutterEngineResult(* FlutterEngineRegisterExternalTextureFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)

Definition at line 3245 of file embedder.h.

◆ FlutterEngineReloadSystemFontsFnPtr

typedef FlutterEngineResult(* FlutterEngineReloadSystemFontsFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3272 of file embedder.h.

◆ FlutterEngineRemoveViewFnPtr

typedef FlutterEngineResult(* FlutterEngineRemoveViewFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterRemoveViewInfo *info)

Definition at line 3314 of file embedder.h.

◆ FlutterEngineRunFnPtr

typedef FlutterEngineResult(* FlutterEngineRunFnPtr) (size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)

Definition at line 3197 of file embedder.h.

◆ FlutterEngineRunInitializedFnPtr

typedef FlutterEngineResult(* FlutterEngineRunInitializedFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3213 of file embedder.h.

◆ FlutterEngineRunsAOTCompiledDartCodeFnPtr

typedef bool(* FlutterEngineRunsAOTCompiledDartCodeFnPtr) (void)

Definition at line 3289 of file embedder.h.

◆ FlutterEngineRunTaskFnPtr

typedef FlutterEngineResult(* FlutterEngineRunTaskFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterTask *task)

Definition at line 3282 of file embedder.h.

◆ FlutterEngineScheduleFrameFnPtr

typedef FlutterEngineResult(* FlutterEngineScheduleFrameFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3305 of file embedder.h.

◆ FlutterEngineSendKeyEventFnPtr

Definition at line 3222 of file embedder.h.

◆ FlutterEngineSendPlatformMessageFnPtr

typedef FlutterEngineResult(* FlutterEngineSendPlatformMessageFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessage *message)

Definition at line 3227 of file embedder.h.

◆ FlutterEngineSendPlatformMessageResponseFnPtr

typedef FlutterEngineResult(* FlutterEngineSendPlatformMessageResponseFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessageResponseHandle *handle, const uint8_t *data, size_t data_length)

Definition at line 3240 of file embedder.h.

◆ FlutterEngineSendPointerEventFnPtr

typedef FlutterEngineResult(* FlutterEngineSendPointerEventFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPointerEvent *events, size_t events_count)

Definition at line 3218 of file embedder.h.

◆ FlutterEngineSendWindowMetricsEventFnPtr

typedef FlutterEngineResult(* FlutterEngineSendWindowMetricsEventFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterWindowMetricsEvent *event)

Definition at line 3215 of file embedder.h.

◆ FlutterEngineSetNextFrameCallbackFnPtr

typedef FlutterEngineResult(* FlutterEngineSetNextFrameCallbackFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *user_data)

Definition at line 3307 of file embedder.h.

◆ FlutterEngineShutdownFnPtr

typedef FlutterEngineResult(* FlutterEngineShutdownFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine)

Definition at line 3203 of file embedder.h.

◆ FlutterEngineTraceEventDurationBeginFnPtr

typedef void(* FlutterEngineTraceEventDurationBeginFnPtr) (const char *name)

Definition at line 3274 of file embedder.h.

◆ FlutterEngineTraceEventDurationEndFnPtr

typedef void(* FlutterEngineTraceEventDurationEndFnPtr) (const char *name)

Definition at line 3275 of file embedder.h.

◆ FlutterEngineTraceEventInstantFnPtr

typedef void(* FlutterEngineTraceEventInstantFnPtr) (const char *name)

Definition at line 3276 of file embedder.h.

◆ FlutterEngineUnregisterExternalTextureFnPtr

typedef FlutterEngineResult(* FlutterEngineUnregisterExternalTextureFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)

Definition at line 3248 of file embedder.h.

◆ FlutterEngineUpdateAccessibilityFeaturesFnPtr

typedef FlutterEngineResult(* FlutterEngineUpdateAccessibilityFeaturesFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterAccessibilityFeature features)

Definition at line 3258 of file embedder.h.

◆ FlutterEngineUpdateLocalesFnPtr

typedef FlutterEngineResult(* FlutterEngineUpdateLocalesFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterLocale **locales, size_t locales_count)

Definition at line 3285 of file embedder.h.

◆ FlutterEngineUpdateSemanticsEnabledFnPtr

typedef FlutterEngineResult(* FlutterEngineUpdateSemanticsEnabledFnPtr) (FLUTTER_API_SYMBOL(FlutterEngine) engine, bool enabled)

Definition at line 3255 of file embedder.h.

◆ FlutterFrameBufferWithDamageCallback

typedef void(* FlutterFrameBufferWithDamageCallback) (void *, const intptr_t, FlutterDamage *)

Callback for when a frame buffer object is requested with necessary information for partial repaint.

Definition at line 489 of file embedder.h.

◆ FlutterKeyEventCallback

typedef void(* FlutterKeyEventCallback) (bool, void *)

Definition at line 1155 of file embedder.h.

◆ FlutterLayersPresentCallback

typedef bool(* FlutterLayersPresentCallback) (const FlutterLayer **layers, size_t layers_count, void *user_data)

Definition at line 1875 of file embedder.h.

◆ FlutterLogMessageCallback

typedef void(* FlutterLogMessageCallback) (const char *, const char *, void *)

Definition at line 2130 of file embedder.h.

◆ FlutterMetalCommandQueueHandle

typedef const void* FlutterMetalCommandQueueHandle

Alias for id<MTLCommandQueue>.

Definition at line 599 of file embedder.h.

◆ FlutterMetalDeviceHandle

typedef const void* FlutterMetalDeviceHandle

Alias for id<MTLDevice>.

Definition at line 596 of file embedder.h.

◆ FlutterMetalPresentCallback

typedef bool(* FlutterMetalPresentCallback) (void *, const FlutterMetalTexture *)

Callback for when a metal texture is presented. The texture_id here corresponds to the texture_id provided by the embedder in the FlutterMetalTextureCallback callback.

Definition at line 679 of file embedder.h.

◆ FlutterMetalTextureCallback

typedef FlutterMetalTexture(* FlutterMetalTextureCallback) (void *, const FlutterFrameInfo *)

Callback for when a metal texture is requested.

Definition at line 672 of file embedder.h.

◆ FlutterMetalTextureFrameCallback

typedef bool(* FlutterMetalTextureFrameCallback) (void *, int64_t, size_t, size_t, FlutterMetalExternalTexture *)

Callback to provide an external texture for a given texture_id. See: external_texture_frame_callback.

Definition at line 642 of file embedder.h.

◆ FlutterMetalTextureHandle

typedef const void* FlutterMetalTextureHandle

Alias for id<MTLTexture>.

Definition at line 602 of file embedder.h.

◆ FlutterNativeThreadCallback

typedef void(* FlutterNativeThreadCallback) (FlutterNativeThreadType type, void *user_data)

A callback made by the engine in response to FlutterEnginePostCallbackOnAllNativeThreads on all internal thread.

Definition at line 2105 of file embedder.h.

◆ FlutterPlatformMessageCallback

typedef void(* FlutterPlatformMessageCallback) (const FlutterPlatformMessage *, void *)

Definition at line 1177 of file embedder.h.

◆ FlutterPlatformMessageResponseHandle

Definition at line 1160 of file embedder.h.

◆ FlutterPlatformViewIdentifier

The identifier of the platform view. This identifier is specified by the application when a platform view is added to the scene via the SceneBuilder.addPlatformView call.

Definition at line 1188 of file embedder.h.

◆ FlutterPresentViewCallback

typedef bool(* FlutterPresentViewCallback) (const FlutterPresentViewInfo *)

The callback invoked when the embedder should present to a view.

The |FlutterPresentViewInfo| will be deallocated once the callback returns.

Definition at line 1882 of file embedder.h.

◆ FlutterRemoveViewCallback

typedef void(* FlutterRemoveViewCallback) (const FlutterRemoveViewResult *)

The callback invoked by the engine when the engine has attempted to remove a view.

The |FlutterRemoveViewResult| is only guaranteed to be valid during this callback.

Definition at line 933 of file embedder.h.

◆ FlutterTaskRunner

Definition at line 1548 of file embedder.h.

◆ FlutterTaskRunnerPostTaskCallback

typedef void(* FlutterTaskRunnerPostTaskCallback) (FlutterTask, uint64_t, void *)

Definition at line 1555 of file embedder.h.

◆ FlutterUpdateSemanticsCallback

typedef void(* FlutterUpdateSemanticsCallback) (const FlutterSemanticsUpdate *, void *)

Definition at line 1526 of file embedder.h.

◆ FlutterUpdateSemanticsCallback2

typedef void(* FlutterUpdateSemanticsCallback2) (const FlutterSemanticsUpdate2 *, void *)

Definition at line 1530 of file embedder.h.

◆ FlutterUpdateSemanticsCustomActionCallback

typedef void(* FlutterUpdateSemanticsCustomActionCallback) (const FlutterSemanticsCustomAction *, void *)

Definition at line 1522 of file embedder.h.

◆ FlutterUpdateSemanticsNodeCallback

typedef void(* FlutterUpdateSemanticsNodeCallback) (const FlutterSemanticsNode *, void *)

Definition at line 1518 of file embedder.h.

◆ FlutterViewId

typedef int64_t FlutterViewId

Unique identifier for views.

View IDs are generated by the embedder and are opaque to the engine; the engine does not interpret view IDs in any way.

Definition at line 275 of file embedder.h.

◆ FlutterVulkanDeviceHandle

Alias for VkDevice.

Definition at line 714 of file embedder.h.

◆ FlutterVulkanImageCallback

typedef FlutterVulkanImage(* FlutterVulkanImageCallback) (void *, const FlutterFrameInfo *)

Callback for when a VkImage is requested.

Definition at line 740 of file embedder.h.

◆ FlutterVulkanImageHandle

typedef uint64_t FlutterVulkanImageHandle

Alias for VkImage.

Definition at line 720 of file embedder.h.

◆ FlutterVulkanInstanceHandle

Alias for VkInstance.

Definition at line 708 of file embedder.h.

◆ FlutterVulkanInstanceProcAddressCallback

typedef void *(* FlutterVulkanInstanceProcAddressCallback) (void *, FlutterVulkanInstanceHandle, const char *)

Callback to fetch a Vulkan function pointer for a given instance. Normally, this should return the results of vkGetInstanceProcAddr.

Definition at line 734 of file embedder.h.

◆ FlutterVulkanPhysicalDeviceHandle

Alias for VkPhysicalDevice.

Definition at line 711 of file embedder.h.

◆ FlutterVulkanPresentCallback

typedef bool(* FlutterVulkanPresentCallback) (void *, const FlutterVulkanImage *)

Callback for when a VkImage has been written to and is ready for use by the embedder.

Definition at line 746 of file embedder.h.

◆ FlutterVulkanQueueHandle

typedef void* FlutterVulkanQueueHandle

Alias for VkQueue.

Definition at line 717 of file embedder.h.

◆ OnPreEngineRestartCallback

typedef void(* OnPreEngineRestartCallback) (void *)

Definition at line 420 of file embedder.h.

◆ ProcResolver

typedef void *(* ProcResolver) (void *, const char *)

Definition at line 413 of file embedder.h.

◆ SoftwareSurfacePresentCallback

typedef bool(* SoftwareSurfacePresentCallback) (void *, const void *, size_t, size_t)

Definition at line 409 of file embedder.h.

◆ TextureFrameCallback

typedef bool(* TextureFrameCallback) (void *, int64_t, size_t, size_t, FlutterOpenGLTexture *)

Definition at line 414 of file embedder.h.

◆ TransformationCallback

typedef FlutterTransformation(* TransformationCallback) (void *)

Definition at line 407 of file embedder.h.

◆ UIntCallback

typedef uint32_t(* UIntCallback) (void *)

Definition at line 408 of file embedder.h.

◆ UIntFrameInfoCallback

typedef uint32_t(* UIntFrameInfoCallback) (void *, const FlutterFrameInfo *)

Callback for when a frame buffer object is requested.

Definition at line 483 of file embedder.h.

◆ VoidCallback

typedef void(* VoidCallback) (void *)

Definition at line 298 of file embedder.h.

◆ VsyncCallback

typedef void(* VsyncCallback) (void *, intptr_t)

Definition at line 419 of file embedder.h.

Enumeration Type Documentation

◆ FlutterAccessibilityFeature

Additional accessibility features that may be enabled by the platform. Must match the AccessibilityFeatures enum in window.dart.

Enumerator
kFlutterAccessibilityFeatureAccessibleNavigation 

Indicate there is a running accessibility service which is changing the interaction model of the device.

kFlutterAccessibilityFeatureInvertColors 

Indicate the platform is inverting the colors of the application.

kFlutterAccessibilityFeatureDisableAnimations 

Request that animations be disabled or simplified.

kFlutterAccessibilityFeatureBoldText 

Request that text be rendered at a bold font weight.

kFlutterAccessibilityFeatureReduceMotion 

Request that certain animations be simplified and parallax effects removed.

kFlutterAccessibilityFeatureHighContrast 

Request that UI be rendered with darker colors.

kFlutterAccessibilityFeatureOnOffSwitchLabels 

Request to show on/off labels inside switches.

Definition at line 91 of file embedder.h.

91 {
92 /// Indicate there is a running accessibility service which is changing the
93 /// interaction model of the device.
95 /// Indicate the platform is inverting the colors of the application.
97 /// Request that animations be disabled or simplified.
99 /// Request that text be rendered at a bold font weight.
101 /// Request that certain animations be simplified and parallax effects
102 /// removed.
104 /// Request that UI be rendered with darker colors.
106 /// Request to show on/off labels inside switches.
FlutterAccessibilityFeature
Definition: embedder.h:91
@ kFlutterAccessibilityFeatureOnOffSwitchLabels
Request to show on/off labels inside switches.
Definition: embedder.h:107
@ kFlutterAccessibilityFeatureBoldText
Request that text be rendered at a bold font weight.
Definition: embedder.h:100
@ kFlutterAccessibilityFeatureHighContrast
Request that UI be rendered with darker colors.
Definition: embedder.h:105
@ kFlutterAccessibilityFeatureReduceMotion
Definition: embedder.h:103
@ kFlutterAccessibilityFeatureDisableAnimations
Request that animations be disabled or simplified.
Definition: embedder.h:98
@ kFlutterAccessibilityFeatureInvertColors
Indicate the platform is inverting the colors of the application.
Definition: embedder.h:96
@ kFlutterAccessibilityFeatureAccessibleNavigation
Definition: embedder.h:94

◆ FlutterBackingStoreType

Enumerator
kFlutterBackingStoreTypeOpenGL 

Specifies an OpenGL backing store. Can either be an OpenGL texture or framebuffer.

kFlutterBackingStoreTypeSoftware 

Specified an software allocation for Flutter to render into using the CPU.

kFlutterBackingStoreTypeMetal 

Specifies a Metal backing store. This is backed by a Metal texture.

kFlutterBackingStoreTypeVulkan 

Specifies a Vulkan backing store. This is backed by a Vulkan VkImage.

kFlutterBackingStoreTypeSoftware2 

Specifies a allocation that the engine should render into using software rendering.

Definition at line 1739 of file embedder.h.

1739 {
1740 /// Specifies an OpenGL backing store. Can either be an OpenGL texture or
1741 /// framebuffer.
1743 /// Specified an software allocation for Flutter to render into using the CPU.
1745 /// Specifies a Metal backing store. This is backed by a Metal texture.
1747 /// Specifies a Vulkan backing store. This is backed by a Vulkan VkImage.
1749 /// Specifies a allocation that the engine should render into using
1750 /// software rendering.
FlutterBackingStoreType
Definition: embedder.h:1739
@ kFlutterBackingStoreTypeSoftware2
Definition: embedder.h:1751
@ kFlutterBackingStoreTypeMetal
Specifies a Metal backing store. This is backed by a Metal texture.
Definition: embedder.h:1746
@ kFlutterBackingStoreTypeVulkan
Specifies a Vulkan backing store. This is backed by a Vulkan VkImage.
Definition: embedder.h:1748
@ kFlutterBackingStoreTypeSoftware
Specified an software allocation for Flutter to render into using the CPU.
Definition: embedder.h:1744
@ kFlutterBackingStoreTypeOpenGL
Definition: embedder.h:1742

◆ FlutterEngineAOTDataSourceType

AOT data source type.

Enumerator
kFlutterEngineAOTDataSourceTypeElfPath 

Definition at line 2109 of file embedder.h.

2109 {
FlutterEngineAOTDataSourceType
AOT data source type.
Definition: embedder.h:2109
@ kFlutterEngineAOTDataSourceTypeElfPath
Definition: embedder.h:2110

◆ FlutterEngineDartObjectType

Enumerator
kFlutterEngineDartObjectTypeNull 
kFlutterEngineDartObjectTypeBool 
kFlutterEngineDartObjectTypeInt32 
kFlutterEngineDartObjectTypeInt64 
kFlutterEngineDartObjectTypeDouble 
kFlutterEngineDartObjectTypeString 
kFlutterEngineDartObjectTypeBuffer 

The object will be made available to Dart code as an instance of Uint8List.

Definition at line 2012 of file embedder.h.

2012 {
2019 /// The object will be made available to Dart code as an instance of
2020 /// Uint8List.
FlutterEngineDartObjectType
Definition: embedder.h:2012
@ kFlutterEngineDartObjectTypeString
Definition: embedder.h:2018
@ kFlutterEngineDartObjectTypeBool
Definition: embedder.h:2014
@ kFlutterEngineDartObjectTypeDouble
Definition: embedder.h:2017
@ kFlutterEngineDartObjectTypeInt32
Definition: embedder.h:2015
@ kFlutterEngineDartObjectTypeBuffer
Definition: embedder.h:2021
@ kFlutterEngineDartObjectTypeInt64
Definition: embedder.h:2016
@ kFlutterEngineDartObjectTypeNull
Definition: embedder.h:2013

◆ FlutterEngineDisplaysUpdateType

The update type parameter that is passed to FlutterEngineNotifyDisplayUpdate.

Enumerator
kFlutterEngineDisplaysUpdateTypeStartup 

FlutterEngineDisplays that were active during start-up. A display is considered active if:

  1. The frame buffer hardware is connected.
  2. The display is drawable, e.g. it isn't being mirrored from another connected display or sleeping.
kFlutterEngineDisplaysUpdateTypeCount 

Definition at line 2000 of file embedder.h.

2000 {
2001 /// `FlutterEngineDisplay`s that were active during start-up. A display is
2002 /// considered active if:
2003 /// 1. The frame buffer hardware is connected.
2004 /// 2. The display is drawable, e.g. it isn't being mirrored from another
2005 /// connected display or sleeping.
FlutterEngineDisplaysUpdateType
Definition: embedder.h:2000
@ kFlutterEngineDisplaysUpdateTypeStartup
Definition: embedder.h:2006
@ kFlutterEngineDisplaysUpdateTypeCount
Definition: embedder.h:2007

◆ FlutterEngineResult

Enumerator
kSuccess 
kInvalidLibraryVersion 
kInvalidArguments 
kInternalInconsistency 

Definition at line 72 of file embedder.h.

72 {
73 kSuccess = 0,
FlutterEngineResult
Definition: embedder.h:72
@ kInternalInconsistency
Definition: embedder.h:76
@ kInvalidLibraryVersion
Definition: embedder.h:74
@ kInvalidArguments
Definition: embedder.h:75
@ kSuccess
Definition: embedder.h:73

◆ FlutterKeyEventDeviceType

Enumerator
kFlutterKeyEventDeviceTypeKeyboard 
kFlutterKeyEventDeviceTypeDirectionalPad 
kFlutterKeyEventDeviceTypeGamepad 
kFlutterKeyEventDeviceTypeJoystick 
kFlutterKeyEventDeviceTypeHdmi 

Definition at line 1080 of file embedder.h.

1080 {
FlutterKeyEventDeviceType
Definition: embedder.h:1080
@ kFlutterKeyEventDeviceTypeKeyboard
Definition: embedder.h:1081
@ kFlutterKeyEventDeviceTypeDirectionalPad
Definition: embedder.h:1082
@ kFlutterKeyEventDeviceTypeHdmi
Definition: embedder.h:1085
@ kFlutterKeyEventDeviceTypeJoystick
Definition: embedder.h:1084
@ kFlutterKeyEventDeviceTypeGamepad
Definition: embedder.h:1083

◆ FlutterKeyEventType

Enumerator
kFlutterKeyEventTypeUp 
kFlutterKeyEventTypeDown 
kFlutterKeyEventTypeRepeat 

Definition at line 1074 of file embedder.h.

1074 {
FlutterKeyEventType
Definition: embedder.h:1074
@ kFlutterKeyEventTypeDown
Definition: embedder.h:1076
@ kFlutterKeyEventTypeUp
Definition: embedder.h:1075
@ kFlutterKeyEventTypeRepeat
Definition: embedder.h:1077

◆ FlutterLayerContentType

Enumerator
kFlutterLayerContentTypeBackingStore 

Indicates that the contents of this layer are rendered by Flutter into a backing store.

kFlutterLayerContentTypePlatformView 

Indicates that the contents of this layer are determined by the embedder.

Definition at line 1790 of file embedder.h.

1790 {
1791 /// Indicates that the contents of this layer are rendered by Flutter into a
1792 /// backing store.
1794 /// Indicates that the contents of this layer are determined by the embedder.
FlutterLayerContentType
Definition: embedder.h:1790
@ kFlutterLayerContentTypePlatformView
Indicates that the contents of this layer are determined by the embedder.
Definition: embedder.h:1795
@ kFlutterLayerContentTypeBackingStore
Definition: embedder.h:1793

◆ FlutterMetalExternalTexturePixelFormat

Pixel format for the external texture.

Enumerator
kYUVA 
kRGBA 

Definition at line 605 of file embedder.h.

605 {
606 kYUVA,
607 kRGBA,
FlutterMetalExternalTexturePixelFormat
Pixel format for the external texture.
Definition: embedder.h:605
@ kRGBA
Definition: embedder.h:607
@ kYUVA
Definition: embedder.h:606

◆ FlutterMetalExternalTextureYUVColorSpace

YUV color space for the YUV external texture.

Enumerator
kBT601FullRange 
kBT601LimitedRange 

Definition at line 611 of file embedder.h.

611 {
FlutterMetalExternalTextureYUVColorSpace
YUV color space for the YUV external texture.
Definition: embedder.h:611
@ kBT601LimitedRange
Definition: embedder.h:613
@ kBT601FullRange
Definition: embedder.h:612

◆ FlutterNativeThreadType

This enum allows embedders to determine the type of the engine thread in the FlutterNativeThreadCallback. Based on the thread type, the embedder may be able to tweak the thread priorities for optimum performance.

Enumerator
kFlutterNativeThreadTypePlatform 

The Flutter Engine considers the thread on which the FlutterEngineRun call is made to be the platform thread. There is only one such thread per engine instance.

kFlutterNativeThreadTypeRender 

This is the thread the Flutter Engine uses to execute rendering commands based on the selected client rendering API. There is only one such thread per engine instance.

kFlutterNativeThreadTypeUI 

This is a dedicated thread on which the root Dart isolate is serviced. There is only one such thread per engine instance.

kFlutterNativeThreadTypeWorker 

Multiple threads are used by the Flutter engine to perform long running background tasks.

Definition at line 2086 of file embedder.h.

2086 {
2087 /// The Flutter Engine considers the thread on which the FlutterEngineRun call
2088 /// is made to be the platform thread. There is only one such thread per
2089 /// engine instance.
2091 /// This is the thread the Flutter Engine uses to execute rendering commands
2092 /// based on the selected client rendering API. There is only one such thread
2093 /// per engine instance.
2095 /// This is a dedicated thread on which the root Dart isolate is serviced.
2096 /// There is only one such thread per engine instance.
2098 /// Multiple threads are used by the Flutter engine to perform long running
2099 /// background tasks.
FlutterNativeThreadType
Definition: embedder.h:2086
@ kFlutterNativeThreadTypeWorker
Definition: embedder.h:2100
@ kFlutterNativeThreadTypeUI
Definition: embedder.h:2097
@ kFlutterNativeThreadTypePlatform
Definition: embedder.h:2090
@ kFlutterNativeThreadTypeRender
Definition: embedder.h:2094

◆ FlutterOpenGLTargetType

Enumerator
kFlutterOpenGLTargetTypeTexture 

Specifies an OpenGL texture target type. Textures are specified using the FlutterOpenGLTexture struct.

kFlutterOpenGLTargetTypeFramebuffer 

Specifies an OpenGL frame-buffer target type. Framebuffers are specified using the FlutterOpenGLFramebuffer struct.

Definition at line 300 of file embedder.h.

300 {
301 /// Specifies an OpenGL texture target type. Textures are specified using
302 /// the FlutterOpenGLTexture struct.
304 /// Specifies an OpenGL frame-buffer target type. Framebuffers are specified
305 /// using the FlutterOpenGLFramebuffer struct.
FlutterOpenGLTargetType
Definition: embedder.h:300
@ kFlutterOpenGLTargetTypeFramebuffer
Definition: embedder.h:306
@ kFlutterOpenGLTargetTypeTexture
Definition: embedder.h:303

◆ FlutterPlatformViewMutationType

Enumerator
kFlutterPlatformViewMutationTypeOpacity 

Indicates that the Flutter application requested that an opacity be applied to the platform view.

kFlutterPlatformViewMutationTypeClipRect 

Indicates that the Flutter application requested that the platform view be clipped using a rectangle.

kFlutterPlatformViewMutationTypeClipRoundedRect 

Indicates that the Flutter application requested that the platform view be clipped using a rounded rectangle.

kFlutterPlatformViewMutationTypeTransformation 

Indicates that the Flutter application requested that the platform view be transformed before composition.

Definition at line 1688 of file embedder.h.

1688 {
1689 /// Indicates that the Flutter application requested that an opacity be
1690 /// applied to the platform view.
1692 /// Indicates that the Flutter application requested that the platform view be
1693 /// clipped using a rectangle.
1695 /// Indicates that the Flutter application requested that the platform view be
1696 /// clipped using a rounded rectangle.
1698 /// Indicates that the Flutter application requested that the platform view be
1699 /// transformed before composition.
FlutterPlatformViewMutationType
Definition: embedder.h:1688
@ kFlutterPlatformViewMutationTypeClipRoundedRect
Definition: embedder.h:1697
@ kFlutterPlatformViewMutationTypeClipRect
Definition: embedder.h:1694
@ kFlutterPlatformViewMutationTypeTransformation
Definition: embedder.h:1700
@ kFlutterPlatformViewMutationTypeOpacity
Definition: embedder.h:1691

◆ FlutterPointerDeviceKind

The device type that created a pointer event.

Enumerator
kFlutterPointerDeviceKindMouse 
kFlutterPointerDeviceKindTouch 
kFlutterPointerDeviceKindStylus 
kFlutterPointerDeviceKindTrackpad 

Definition at line 1007 of file embedder.h.

1007 {
FlutterPointerDeviceKind
The device type that created a pointer event.
Definition: embedder.h:1007
@ kFlutterPointerDeviceKindTouch
Definition: embedder.h:1009
@ kFlutterPointerDeviceKindTrackpad
Definition: embedder.h:1011
@ kFlutterPointerDeviceKindStylus
Definition: embedder.h:1010
@ kFlutterPointerDeviceKindMouse
Definition: embedder.h:1008

◆ FlutterPointerMouseButtons

Flags for the buttons field of FlutterPointerEvent when device_kind is kFlutterPointerDeviceKindMouse.

Enumerator
kFlutterPointerButtonMousePrimary 
kFlutterPointerButtonMouseSecondary 
kFlutterPointerButtonMouseMiddle 
kFlutterPointerButtonMouseBack 
kFlutterPointerButtonMouseForward 

Definition at line 1016 of file embedder.h.

1016 {
1022 /// If a mouse has more than five buttons, send higher bit shifted values
1023 /// corresponding to the button number: 1 << 5 for the 6th, etc.
FlutterPointerMouseButtons
Definition: embedder.h:1016
@ kFlutterPointerButtonMousePrimary
Definition: embedder.h:1017
@ kFlutterPointerButtonMouseMiddle
Definition: embedder.h:1019
@ kFlutterPointerButtonMouseForward
Definition: embedder.h:1021
@ kFlutterPointerButtonMouseBack
Definition: embedder.h:1020
@ kFlutterPointerButtonMouseSecondary
Definition: embedder.h:1018

◆ FlutterPointerPhase

The phase of the pointer event.

Enumerator
kCancel 
kUp 

The pointer, which must have been down (see kDown), is now up.

For touch, this means that the pointer is no longer in contact with the screen. For a mouse, it means the last button was released. Note that if any other buttons are still pressed when one button is released, that should be sent as a kMove rather than a kUp.

kDown 

The pointer, which must have been up, is now down.

For touch, this means that the pointer has come into contact with the screen. For a mouse, it means a button is now pressed. Note that if any other buttons are already pressed when a new button is pressed, that should be sent as a kMove rather than a kDown.

kMove 

The pointer moved while down.

This is also used for changes in button state that don't cause a kDown or kUp, such as releasing one of two pressed buttons.

kAdd 

The pointer is now sending input to Flutter. For instance, a mouse has entered the area where the Flutter content is displayed.

A pointer should always be added before sending any other events.

kRemove 

The pointer is no longer sending input to Flutter. For instance, a mouse has left the area where the Flutter content is displayed.

A removed pointer should no longer send events until sending a new kAdd.

kHover 

The pointer moved while up.

kPanZoomStart 

A pan/zoom started on this pointer.

kPanZoomUpdate 

The pan/zoom updated.

kPanZoomEnd 

The pan/zoom ended.

Definition at line 965 of file embedder.h.

965 {
966 kCancel,
967 /// The pointer, which must have been down (see kDown), is now up.
968 ///
969 /// For touch, this means that the pointer is no longer in contact with the
970 /// screen. For a mouse, it means the last button was released. Note that if
971 /// any other buttons are still pressed when one button is released, that
972 /// should be sent as a kMove rather than a kUp.
973 kUp,
974 /// The pointer, which must have been up, is now down.
975 ///
976 /// For touch, this means that the pointer has come into contact with the
977 /// screen. For a mouse, it means a button is now pressed. Note that if any
978 /// other buttons are already pressed when a new button is pressed, that
979 /// should be sent as a kMove rather than a kDown.
980 kDown,
981 /// The pointer moved while down.
982 ///
983 /// This is also used for changes in button state that don't cause a kDown or
984 /// kUp, such as releasing one of two pressed buttons.
985 kMove,
986 /// The pointer is now sending input to Flutter. For instance, a mouse has
987 /// entered the area where the Flutter content is displayed.
988 ///
989 /// A pointer should always be added before sending any other events.
990 kAdd,
991 /// The pointer is no longer sending input to Flutter. For instance, a mouse
992 /// has left the area where the Flutter content is displayed.
993 ///
994 /// A removed pointer should no longer send events until sending a new kAdd.
995 kRemove,
996 /// The pointer moved while up.
997 kHover,
998 /// A pan/zoom started on this pointer.
1000 /// The pan/zoom updated.
1002 /// The pan/zoom ended.
FlutterPointerPhase
The phase of the pointer event.
Definition: embedder.h:965
@ kPanZoomUpdate
The pan/zoom updated.
Definition: embedder.h:1001
@ kHover
The pointer moved while up.
Definition: embedder.h:997
@ kUp
Definition: embedder.h:973
@ kPanZoomStart
A pan/zoom started on this pointer.
Definition: embedder.h:999
@ kRemove
Definition: embedder.h:995
@ kCancel
Definition: embedder.h:966
@ kDown
Definition: embedder.h:980
@ kAdd
Definition: embedder.h:990
@ kMove
Definition: embedder.h:985
@ kPanZoomEnd
The pan/zoom ended.
Definition: embedder.h:1003

◆ FlutterPointerSignalKind

The type of a pointer signal.

Enumerator
kFlutterPointerSignalKindNone 
kFlutterPointerSignalKindScroll 
kFlutterPointerSignalKindScrollInertiaCancel 
kFlutterPointerSignalKindScale 

Definition at line 1027 of file embedder.h.

1027 {
FlutterPointerSignalKind
The type of a pointer signal.
Definition: embedder.h:1027
@ kFlutterPointerSignalKindScale
Definition: embedder.h:1031
@ kFlutterPointerSignalKindScrollInertiaCancel
Definition: embedder.h:1030
@ kFlutterPointerSignalKindScroll
Definition: embedder.h:1029
@ kFlutterPointerSignalKindNone
Definition: embedder.h:1028

◆ FlutterRendererType

Enumerator
kOpenGL 
kSoftware 
kMetal 

Metal is only supported on Darwin platforms (macOS / iOS). iOS version >= 10.0 (device), 13.0 (simulator) macOS version >= 10.14

kVulkan 

Definition at line 79 of file embedder.h.

79 {
80 kOpenGL,
82 /// Metal is only supported on Darwin platforms (macOS / iOS).
83 /// iOS version >= 10.0 (device), 13.0 (simulator)
84 /// macOS version >= 10.14
85 kMetal,
86 kVulkan,
FlutterRendererType
Definition: embedder.h:79
@ kVulkan
Definition: embedder.h:86
@ kOpenGL
Definition: embedder.h:80
@ kMetal
Definition: embedder.h:85
@ kSoftware
Definition: embedder.h:81

◆ FlutterSemanticsAction

The set of possible actions that can be conveyed to a semantics node.

Must match the SemanticsAction enum in semantics.dart.

Enumerator
kFlutterSemanticsActionTap 

The equivalent of a user briefly tapping the screen with the finger without moving it.

kFlutterSemanticsActionLongPress 

The equivalent of a user pressing and holding the screen with the finger for a few seconds without moving it.

kFlutterSemanticsActionScrollLeft 

The equivalent of a user moving their finger across the screen from right to left.

kFlutterSemanticsActionScrollRight 

The equivalent of a user moving their finger across the screen from left to right.

kFlutterSemanticsActionScrollUp 

The equivalent of a user moving their finger across the screen from bottom to top.

kFlutterSemanticsActionScrollDown 

The equivalent of a user moving their finger across the screen from top to bottom.

kFlutterSemanticsActionIncrease 

Increase the value represented by the semantics node.

kFlutterSemanticsActionDecrease 

Decrease the value represented by the semantics node.

kFlutterSemanticsActionShowOnScreen 

A request to fully show the semantics node on screen.

kFlutterSemanticsActionMoveCursorForwardByCharacter 

Move the cursor forward by one character.

kFlutterSemanticsActionMoveCursorBackwardByCharacter 

Move the cursor backward by one character.

kFlutterSemanticsActionSetSelection 

Set the text selection to the given range.

kFlutterSemanticsActionCopy 

Copy the current selection to the clipboard.

kFlutterSemanticsActionCut 

Cut the current selection and place it in the clipboard.

kFlutterSemanticsActionPaste 

Paste the current content of the clipboard.

kFlutterSemanticsActionDidGainAccessibilityFocus 

Indicate that the node has gained accessibility focus.

kFlutterSemanticsActionDidLoseAccessibilityFocus 

Indicate that the node has lost accessibility focus.

kFlutterSemanticsActionCustomAction 

Indicate that the user has invoked a custom accessibility action.

kFlutterSemanticsActionDismiss 

A request that the node should be dismissed.

kFlutterSemanticsActionMoveCursorForwardByWord 

Move the cursor forward by one word.

kFlutterSemanticsActionMoveCursorBackwardByWord 

Move the cursor backward by one word.

kFlutterSemanticsActionSetText 

Replace the current text in the text field.

kFlutterSemanticsActionFocus 

Request that the respective focusable widget gain input focus.

Definition at line 113 of file embedder.h.

113 {
114 /// The equivalent of a user briefly tapping the screen with the finger
115 /// without moving it.
117 /// The equivalent of a user pressing and holding the screen with the finger
118 /// for a few seconds without moving it.
120 /// The equivalent of a user moving their finger across the screen from right
121 /// to left.
123 /// The equivalent of a user moving their finger across the screen from left
124 /// to
125 /// right.
127 /// The equivalent of a user moving their finger across the screen from bottom
128 /// to top.
130 /// The equivalent of a user moving their finger across the screen from top to
131 /// bottom.
133 /// Increase the value represented by the semantics node.
135 /// Decrease the value represented by the semantics node.
137 /// A request to fully show the semantics node on screen.
139 /// Move the cursor forward by one character.
141 /// Move the cursor backward by one character.
143 /// Set the text selection to the given range.
145 /// Copy the current selection to the clipboard.
147 /// Cut the current selection and place it in the clipboard.
149 /// Paste the current content of the clipboard.
151 /// Indicate that the node has gained accessibility focus.
153 /// Indicate that the node has lost accessibility focus.
155 /// Indicate that the user has invoked a custom accessibility action.
157 /// A request that the node should be dismissed.
159 /// Move the cursor forward by one word.
161 /// Move the cursor backward by one word.
163 /// Replace the current text in the text field.
165 /// Request that the respective focusable widget gain input focus.
FlutterSemanticsAction
Definition: embedder.h:113
@ kFlutterSemanticsActionMoveCursorForwardByCharacter
Move the cursor forward by one character.
Definition: embedder.h:140
@ kFlutterSemanticsActionDidLoseAccessibilityFocus
Indicate that the node has lost accessibility focus.
Definition: embedder.h:154
@ kFlutterSemanticsActionDecrease
Decrease the value represented by the semantics node.
Definition: embedder.h:136
@ kFlutterSemanticsActionScrollDown
Definition: embedder.h:132
@ kFlutterSemanticsActionMoveCursorBackwardByCharacter
Move the cursor backward by one character.
Definition: embedder.h:142
@ kFlutterSemanticsActionMoveCursorForwardByWord
Move the cursor forward by one word.
Definition: embedder.h:160
@ kFlutterSemanticsActionLongPress
Definition: embedder.h:119
@ kFlutterSemanticsActionScrollRight
Definition: embedder.h:126
@ kFlutterSemanticsActionShowOnScreen
A request to fully show the semantics node on screen.
Definition: embedder.h:138
@ kFlutterSemanticsActionSetSelection
Set the text selection to the given range.
Definition: embedder.h:144
@ kFlutterSemanticsActionDismiss
A request that the node should be dismissed.
Definition: embedder.h:158
@ kFlutterSemanticsActionFocus
Request that the respective focusable widget gain input focus.
Definition: embedder.h:166
@ kFlutterSemanticsActionPaste
Paste the current content of the clipboard.
Definition: embedder.h:150
@ kFlutterSemanticsActionScrollUp
Definition: embedder.h:129
@ kFlutterSemanticsActionCut
Cut the current selection and place it in the clipboard.
Definition: embedder.h:148
@ kFlutterSemanticsActionCustomAction
Indicate that the user has invoked a custom accessibility action.
Definition: embedder.h:156
@ kFlutterSemanticsActionCopy
Copy the current selection to the clipboard.
Definition: embedder.h:146
@ kFlutterSemanticsActionMoveCursorBackwardByWord
Move the cursor backward by one word.
Definition: embedder.h:162
@ kFlutterSemanticsActionIncrease
Increase the value represented by the semantics node.
Definition: embedder.h:134
@ kFlutterSemanticsActionScrollLeft
Definition: embedder.h:122
@ kFlutterSemanticsActionDidGainAccessibilityFocus
Indicate that the node has gained accessibility focus.
Definition: embedder.h:152
@ kFlutterSemanticsActionSetText
Replace the current text in the text field.
Definition: embedder.h:164
@ kFlutterSemanticsActionTap
Definition: embedder.h:116

◆ FlutterSemanticsFlag

The set of properties that may be associated with a semantics node.

Must match the SemanticsFlag enum in semantics.dart.

Enumerator
kFlutterSemanticsFlagHasCheckedState 

The semantics node has the quality of either being "checked" or "unchecked".

kFlutterSemanticsFlagIsChecked 

Whether a semantics node is checked.

kFlutterSemanticsFlagIsSelected 

Whether a semantics node is selected.

kFlutterSemanticsFlagIsButton 

Whether the semantic node represents a button.

kFlutterSemanticsFlagIsTextField 

Whether the semantic node represents a text field.

kFlutterSemanticsFlagIsFocused 

Whether the semantic node currently holds the user's focus.

kFlutterSemanticsFlagHasEnabledState 

The semantics node has the quality of either being "enabled" or "disabled".

kFlutterSemanticsFlagIsEnabled 

Whether a semantic node that hasEnabledState is currently enabled.

kFlutterSemanticsFlagIsInMutuallyExclusiveGroup 

Whether a semantic node is in a mutually exclusive group.

kFlutterSemanticsFlagIsHeader 

Whether a semantic node is a header that divides content into sections.

kFlutterSemanticsFlagIsObscured 

Whether the value of the semantics node is obscured.

kFlutterSemanticsFlagScopesRoute 

Whether the semantics node is the root of a subtree for which a route name should be announced.

kFlutterSemanticsFlagNamesRoute 

Whether the semantics node label is the name of a visually distinct route.

kFlutterSemanticsFlagIsHidden 

Whether the semantics node is considered hidden.

kFlutterSemanticsFlagIsImage 

Whether the semantics node represents an image.

kFlutterSemanticsFlagIsLiveRegion 

Whether the semantics node is a live region.

kFlutterSemanticsFlagHasToggledState 

The semantics node has the quality of either being "on" or "off".

kFlutterSemanticsFlagIsToggled 

If true, the semantics node is "on". If false, the semantics node is "off".

kFlutterSemanticsFlagHasImplicitScrolling 

Whether the platform can scroll the semantics node when the user attempts to move the accessibility focus to an offscreen child.

For example, a ListView widget has implicit scrolling so that users can easily move the accessibility focus to the next set of children. A PageView widget does not have implicit scrolling, so that users don't navigate to the next page when reaching the end of the current one.

kFlutterSemanticsFlagIsMultiline 

Whether the value of the semantics node is coming from a multi-line text field.

This is used for text fields to distinguish single-line text fields from multi-line ones.

kFlutterSemanticsFlagIsReadOnly 

Whether the semantic node is read only.

Only applicable when kFlutterSemanticsFlagIsTextField flag is on.

kFlutterSemanticsFlagIsFocusable 

Whether the semantic node can hold the user's focus.

kFlutterSemanticsFlagIsLink 

Whether the semantics node represents a link.

kFlutterSemanticsFlagIsSlider 

Whether the semantics node represents a slider.

kFlutterSemanticsFlagIsKeyboardKey 

Whether the semantics node represents a keyboard key.

kFlutterSemanticsFlagIsCheckStateMixed 

Whether the semantics node represents a tristate checkbox in mixed state.

kFlutterSemanticsFlagHasExpandedState 

The semantics node has the quality of either being "expanded" or "collapsed".

kFlutterSemanticsFlagIsExpanded 

Whether a semantic node that hasExpandedState is currently expanded.

Definition at line 172 of file embedder.h.

172 {
173 /// The semantics node has the quality of either being "checked" or
174 /// "unchecked".
176 /// Whether a semantics node is checked.
178 /// Whether a semantics node is selected.
180 /// Whether the semantic node represents a button.
182 /// Whether the semantic node represents a text field.
184 /// Whether the semantic node currently holds the user's focus.
186 /// The semantics node has the quality of either being "enabled" or
187 /// "disabled".
189 /// Whether a semantic node that hasEnabledState is currently enabled.
191 /// Whether a semantic node is in a mutually exclusive group.
193 /// Whether a semantic node is a header that divides content into sections.
195 /// Whether the value of the semantics node is obscured.
197 /// Whether the semantics node is the root of a subtree for which a route name
198 /// should be announced.
200 /// Whether the semantics node label is the name of a visually distinct route.
202 /// Whether the semantics node is considered hidden.
204 /// Whether the semantics node represents an image.
206 /// Whether the semantics node is a live region.
208 /// The semantics node has the quality of either being "on" or "off".
210 /// If true, the semantics node is "on". If false, the semantics node is
211 /// "off".
213 /// Whether the platform can scroll the semantics node when the user attempts
214 /// to move the accessibility focus to an offscreen child.
215 ///
216 /// For example, a `ListView` widget has implicit scrolling so that users can
217 /// easily move the accessibility focus to the next set of children. A
218 /// `PageView` widget does not have implicit scrolling, so that users don't
219 /// navigate to the next page when reaching the end of the current one.
221 /// Whether the value of the semantics node is coming from a multi-line text
222 /// field.
223 ///
224 /// This is used for text fields to distinguish single-line text fields from
225 /// multi-line ones.
227 /// Whether the semantic node is read only.
228 ///
229 /// Only applicable when kFlutterSemanticsFlagIsTextField flag is on.
231 /// Whether the semantic node can hold the user's focus.
233 /// Whether the semantics node represents a link.
235 /// Whether the semantics node represents a slider.
237 /// Whether the semantics node represents a keyboard key.
239 /// Whether the semantics node represents a tristate checkbox in mixed state.
241 /// The semantics node has the quality of either being "expanded" or
242 /// "collapsed".
244 /// Whether a semantic node that hasExpandedState is currently expanded.
FlutterSemanticsFlag
Definition: embedder.h:172
@ kFlutterSemanticsFlagIsHidden
Whether the semantics node is considered hidden.
Definition: embedder.h:203
@ kFlutterSemanticsFlagIsHeader
Whether a semantic node is a header that divides content into sections.
Definition: embedder.h:194
@ kFlutterSemanticsFlagIsSlider
Whether the semantics node represents a slider.
Definition: embedder.h:236
@ kFlutterSemanticsFlagHasToggledState
The semantics node has the quality of either being "on" or "off".
Definition: embedder.h:209
@ kFlutterSemanticsFlagIsSelected
Whether a semantics node is selected.
Definition: embedder.h:179
@ kFlutterSemanticsFlagIsInMutuallyExclusiveGroup
Whether a semantic node is in a mutually exclusive group.
Definition: embedder.h:192
@ kFlutterSemanticsFlagIsKeyboardKey
Whether the semantics node represents a keyboard key.
Definition: embedder.h:238
@ kFlutterSemanticsFlagIsChecked
Whether a semantics node is checked.
Definition: embedder.h:177
@ kFlutterSemanticsFlagScopesRoute
Definition: embedder.h:199
@ kFlutterSemanticsFlagHasExpandedState
Definition: embedder.h:243
@ kFlutterSemanticsFlagIsCheckStateMixed
Whether the semantics node represents a tristate checkbox in mixed state.
Definition: embedder.h:240
@ kFlutterSemanticsFlagIsToggled
Definition: embedder.h:212
@ kFlutterSemanticsFlagIsButton
Whether the semantic node represents a button.
Definition: embedder.h:181
@ kFlutterSemanticsFlagIsMultiline
Definition: embedder.h:226
@ kFlutterSemanticsFlagIsObscured
Whether the value of the semantics node is obscured.
Definition: embedder.h:196
@ kFlutterSemanticsFlagIsReadOnly
Definition: embedder.h:230
@ kFlutterSemanticsFlagIsLink
Whether the semantics node represents a link.
Definition: embedder.h:234
@ kFlutterSemanticsFlagIsLiveRegion
Whether the semantics node is a live region.
Definition: embedder.h:207
@ kFlutterSemanticsFlagIsFocused
Whether the semantic node currently holds the user's focus.
Definition: embedder.h:185
@ kFlutterSemanticsFlagHasImplicitScrolling
Definition: embedder.h:220
@ kFlutterSemanticsFlagIsEnabled
Whether a semantic node that hasEnabledState is currently enabled.
Definition: embedder.h:190
@ kFlutterSemanticsFlagIsImage
Whether the semantics node represents an image.
Definition: embedder.h:205
@ kFlutterSemanticsFlagNamesRoute
Whether the semantics node label is the name of a visually distinct route.
Definition: embedder.h:201
@ kFlutterSemanticsFlagIsFocusable
Whether the semantic node can hold the user's focus.
Definition: embedder.h:232
@ kFlutterSemanticsFlagIsTextField
Whether the semantic node represents a text field.
Definition: embedder.h:183
@ kFlutterSemanticsFlagHasCheckedState
Definition: embedder.h:175
@ kFlutterSemanticsFlagHasEnabledState
Definition: embedder.h:188
@ kFlutterSemanticsFlagIsExpanded
Whether a semantic node that hasExpandedState is currently expanded.
Definition: embedder.h:245

◆ FlutterSoftwarePixelFormat

A pixel format to be used for software rendering.

A single pixel always stored as a POT number of bytes. (so in practice either 1, 2, 4, 8, 16 bytes per pixel)

There are two kinds of pixel formats:

  • formats where all components are 8 bits, called array formats The component order as specified in the pixel format name is the order of the components' bytes in memory, with the leftmost component occupying the lowest memory address.
  • all other formats are called packed formats, and the component order as specified in the format name refers to the order in the native type. for example, for kFlutterSoftwarePixelFormatRGB565, the R component uses the 5 least significant bits of the uint16_t pixel value.

Each pixel format in this list is documented with an example on how to get the color components from the pixel.

  • for packed formats, p is the pixel value as a word. For example, you can get the pixel value for a RGB565 formatted buffer like this: uint16_t p = ((const uint16_t*) allocation)[row_bytes * y / bpp + x]; (with bpp being the bytes per pixel, so 2 for RGB565)
  • for array formats, p is a pointer to the pixel value. For example, you can get the p for a RGBA8888 formatted buffer like this: const uint8_t p = ((const uint8_t) allocation) + row_bytes*y + x*4;
Enumerator
kFlutterSoftwarePixelFormatGray8 

pixel with 8 bit grayscale value. The grayscale value is the luma value calculated from r, g, b according to BT.709. (gray = r*0.2126 + g*0.7152 + b*0.0722)

kFlutterSoftwarePixelFormatRGB565 

pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word. r = p & 0x3F; g = (p>>5) & 0x3F; b = p>>11;

kFlutterSoftwarePixelFormatRGBA4444 

pixel with 4 bits for alpha, red, green, blue; in 16-bit word. r = p & 0xF; g = (p>>4) & 0xF; b = (p>>8) & 0xF; a = p>>12;

kFlutterSoftwarePixelFormatRGBA8888 

pixel with 8 bits for red, green, blue, alpha. r = p[0]; g = p[1]; b = p[2]; a = p[3];

kFlutterSoftwarePixelFormatRGBX8888 

pixel with 8 bits for red, green and blue and 8 unused bits. r = p[0]; g = p[1]; b = p[2];

kFlutterSoftwarePixelFormatBGRA8888 

pixel with 8 bits for blue, green, red and alpha. r = p[2]; g = p[1]; b = p[0]; a = p[3];

kFlutterSoftwarePixelFormatNative32 

either kFlutterSoftwarePixelFormatBGRA8888 or kFlutterSoftwarePixelFormatRGBA8888 depending on CPU endianess and OS

Definition at line 335 of file embedder.h.

335 {
336 /// pixel with 8 bit grayscale value.
337 /// The grayscale value is the luma value calculated from r, g, b
338 /// according to BT.709. (gray = r*0.2126 + g*0.7152 + b*0.0722)
340
341 /// pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word.
342 /// r = p & 0x3F; g = (p>>5) & 0x3F; b = p>>11;
344
345 /// pixel with 4 bits for alpha, red, green, blue; in 16-bit word.
346 /// r = p & 0xF; g = (p>>4) & 0xF; b = (p>>8) & 0xF; a = p>>12;
348
349 /// pixel with 8 bits for red, green, blue, alpha.
350 /// r = p[0]; g = p[1]; b = p[2]; a = p[3];
352
353 /// pixel with 8 bits for red, green and blue and 8 unused bits.
354 /// r = p[0]; g = p[1]; b = p[2];
356
357 /// pixel with 8 bits for blue, green, red and alpha.
358 /// r = p[2]; g = p[1]; b = p[0]; a = p[3];
360
361 /// either kFlutterSoftwarePixelFormatBGRA8888 or
362 /// kFlutterSoftwarePixelFormatRGBA8888 depending on CPU endianess and OS
FlutterSoftwarePixelFormat
Definition: embedder.h:335
@ kFlutterSoftwarePixelFormatRGBA4444
Definition: embedder.h:347
@ kFlutterSoftwarePixelFormatRGBA8888
Definition: embedder.h:351
@ kFlutterSoftwarePixelFormatBGRA8888
Definition: embedder.h:359
@ kFlutterSoftwarePixelFormatGray8
Definition: embedder.h:339
@ kFlutterSoftwarePixelFormatNative32
Definition: embedder.h:363
@ kFlutterSoftwarePixelFormatRGBX8888
Definition: embedder.h:355
@ kFlutterSoftwarePixelFormatRGB565
Definition: embedder.h:343

◆ FlutterStringAttributeType

Enumerator
kSpellOut 
kLocale 

Definition at line 1200 of file embedder.h.

1200 {
1201 // Indicates the string should be announced character by character.
1202 kSpellOut,
1203 // Indicates the string should be announced using the specified locale.
1204 kLocale,
FlutterStringAttributeType
Definition: embedder.h:1200
@ kSpellOut
Definition: embedder.h:1202
@ kLocale
Definition: embedder.h:1204

◆ FlutterTextDirection

Enumerator
kFlutterTextDirectionUnknown 

Text has unknown text direction.

kFlutterTextDirectionRTL 

Text is read from right to left.

kFlutterTextDirectionLTR 

Text is read from left to right.

Definition at line 248 of file embedder.h.

248 {
249 /// Text has unknown text direction.
251 /// Text is read from right to left.
253 /// Text is read from left to right.
FlutterTextDirection
Definition: embedder.h:248
@ kFlutterTextDirectionUnknown
Text has unknown text direction.
Definition: embedder.h:250
@ kFlutterTextDirectionRTL
Text is read from right to left.
Definition: embedder.h:252
@ kFlutterTextDirectionLTR
Text is read from left to right.
Definition: embedder.h:254

◆ FlutterThreadPriority

Valid values for priority of Thread.

Enumerator
kBackground 

Suitable for threads that shouldn't disrupt high priority work.

kNormal 

Default priority level.

kDisplay 

Suitable for threads which generate data for the display.

kRaster 

Suitable for thread which raster data.

Definition at line 258 of file embedder.h.

258 {
259 /// Suitable for threads that shouldn't disrupt high priority work.
260 kBackground = 0,
261 /// Default priority level.
262 kNormal = 1,
263 /// Suitable for threads which generate data for the display.
264 kDisplay = 2,
265 /// Suitable for thread which raster data.
266 kRaster = 3,
FlutterThreadPriority
Valid values for priority of Thread.
Definition: embedder.h:258
@ kBackground
Suitable for threads that shouldn't disrupt high priority work.
Definition: embedder.h:260
@ kDisplay
Suitable for threads which generate data for the display.
Definition: embedder.h:264
@ kNormal
Default priority level.
Definition: embedder.h:262
@ kRaster
Suitable for thread which raster data.
Definition: embedder.h:266

Function Documentation

◆ __FlutterEngineFlushPendingTasksNow()

FLUTTER_EXPORT FlutterEngineResult __FlutterEngineFlushPendingTasksNow ( )

This API is only meant to be used by platforms that need to flush tasks on a message loop not controlled by the Flutter engine.

Deprecated:
This API will be deprecated and is not part of the stable API. Please use the custom task runners API by setting an appropriate FlutterProjectArgs::custom_task_runners interface. This will yield better performance and the interface is stable.
Returns
The result of the call.

Definition at line 2764 of file embedder.cc.

2764 {
2766 return kSuccess;
2767}
static FML_EMBEDDER_ONLY MessageLoop & GetCurrent()
Definition: message_loop.cc:19
void RunExpiredTasksNow()
Definition: message_loop.cc:72

◆ FlutterEngineAddView()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineAddView ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterAddViewInfo info 
)

Adds a view.

        This is an asynchronous operation. The view should not be used
        until the |info.add_view_callback| is invoked with an |added|
        value of true. The embedder should prepare resources in advance
        but be ready to clean up on failure.

        A frame is scheduled if the operation succeeds.

        The callback is invoked on a thread managed by the engine. The
        embedder should re-thread if needed.

        Attempting to add the implicit view will fail and will return
        kInvalidArguments. Attempting to add a view with an already
        existing view ID will fail, and |info.add_view_callback| will be
        invoked with an |added| value of false.
Parameters
[in]engineA running engine instance.
[in]infoThe add view arguments. This can be deallocated once |FlutterEngineAddView| returns, before |add_view_callback| is invoked.
Returns
The result of starting the asynchronous operation. If kSuccess, the |add_view_callback| will be invoked.

Definition at line 2193 of file embedder.cc.

2195 {
2196 if (!engine) {
2197 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2198 }
2199 if (!info || !info->view_metrics || !info->add_view_callback) {
2201 "Add view info handle was invalid.");
2202 }
2203
2204 FlutterViewId view_id = info->view_id;
2205 if (view_id == kFlutterImplicitViewId) {
2206 return LOG_EMBEDDER_ERROR(
2208 "Add view info was invalid. The implicit view cannot be added.");
2209 }
2210 if (SAFE_ACCESS(info->view_metrics, view_id, kFlutterImplicitViewId) !=
2211 view_id) {
2212 if (view_id == kFlutterImplicitViewId) {
2214 "Add view info was invalid. The info and "
2215 "window metric view IDs must match.");
2216 }
2217 }
2218
2219 // TODO(loicsharma): Return an error if the engine was initialized with
2220 // callbacks that are incompatible with multiple views.
2221 // https://github.com/flutter/flutter/issues/144806
2222
2223 std::variant<flutter::ViewportMetrics, std::string> metrics_or_error =
2225
2226 if (const std::string* error = std::get_if<std::string>(&metrics_or_error)) {
2227 return LOG_EMBEDDER_ERROR(kInvalidArguments, error->c_str());
2228 }
2229
2230 auto metrics = std::get<flutter::ViewportMetrics>(metrics_or_error);
2231
2232 // The engine must be running to add a view.
2233 auto embedder_engine = reinterpret_cast<flutter::EmbedderEngine*>(engine);
2234 if (!embedder_engine->IsValid()) {
2235 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2236 }
2237
2239 [c_callback = info->add_view_callback,
2240 user_data = info->user_data](bool added) {
2242 result.struct_size = sizeof(FlutterAddViewResult);
2243 result.added = added;
2244 result.user_data = user_data;
2245 c_callback(&result);
2246 };
2247
2248 embedder_engine->GetShell().GetPlatformView()->AddView(view_id, metrics,
2249 callback);
2250 return kSuccess;
2251}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition: DM.cpp:213
std::function< void(bool added)> AddViewCallback
Definition: platform_view.h:53
#define LOG_EMBEDDER_ERROR(code, reason)
Definition: embedder.cc:153
static constexpr FlutterViewId kFlutterImplicitViewId
Definition: embedder.cc:108
static std::variant< flutter::ViewportMetrics, std::string > MakeViewportMetricsFromWindowMetrics(const FlutterWindowMetricsEvent *flutter_metrics)
Definition: embedder.cc:1361
int64_t FlutterViewId
Definition: embedder.h:275
#define SAFE_ACCESS(pointer, member, default_value)
FlutterEngine engine
Definition: main.cc:68
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
const uint8_t uint32_t uint32_t GError ** error
GAsyncResult * result
void * user_data

◆ FlutterEngineCollectAOTData()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineCollectAOTData ( FlutterEngineAOTData  data)

Collects the AOT data.

Warning
The embedder must ensure that this call is made only after all FlutterEngine instances launched using this data have been terminated, and that all of those instances were launched with the FlutterProjectArgs::shutdown_dart_vm_when_done flag set to true.
Parameters
[in]dataThe data to collect.
Returns
Returns if the AOT data was successfully collected.

Definition at line 1480 of file embedder.cc.

1480 {
1481 if (!data) {
1482 // Deleting a null object should be a no-op.
1483 return kSuccess;
1484 }
1485
1486 // Created in a unique pointer in `FlutterEngineCreateAOTData`.
1487 delete data;
1488 return kSuccess;
1489}
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63

◆ FlutterEngineCreateAOTData()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineCreateAOTData ( const FlutterEngineAOTDataSource source,
FlutterEngineAOTData data_out 
)

Creates the necessary data structures to launch a Flutter Dart application in AOT mode. The data may only be collected after all FlutterEngine instances launched using this data have been terminated.

Parameters
[in]sourceThe source of the AOT data.
[out]data_outThe AOT data on success. Unchanged on failure.
Returns
Returns if the AOT data could be successfully resolved.

Definition at line 1426 of file embedder.cc.

1428 {
1431 "AOT data can only be created in AOT mode.");
1432 } else if (!source) {
1433 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Null source specified.");
1434 } else if (!data_out) {
1435 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Null data_out specified.");
1436 }
1437
1438 switch (source->type) {
1440 if (!source->elf_path || !fml::IsFile(source->elf_path)) {
1442 "Invalid ELF path specified.");
1443 }
1444
1445 auto aot_data = std::make_unique<_FlutterEngineAOTData>();
1446 const char* error = nullptr;
1447
1448#if OS_FUCHSIA
1449 // TODO(gw280): https://github.com/flutter/flutter/issues/50285
1450 // Dart doesn't implement Dart_LoadELF on Fuchsia
1451 Dart_LoadedElf* loaded_elf = nullptr;
1452#else
1453 Dart_LoadedElf* loaded_elf = Dart_LoadELF(
1454 source->elf_path, // file path
1455 0, // file offset
1456 &error, // error (out)
1457 &aot_data->vm_snapshot_data, // vm snapshot data (out)
1458 &aot_data->vm_snapshot_instrs, // vm snapshot instr (out)
1459 &aot_data->vm_isolate_data, // vm isolate data (out)
1460 &aot_data->vm_isolate_instrs // vm isolate instr (out)
1461 );
1462#endif
1463
1464 if (loaded_elf == nullptr) {
1466 }
1467
1468 aot_data->loaded_elf.reset(loaded_elf);
1469
1470 *data_out = aot_data.release();
1471 return kSuccess;
1472 }
1473 }
1474
1475 return LOG_EMBEDDER_ERROR(
1477 "Invalid FlutterEngineAOTDataSourceType type specified.");
1478}
static bool IsRunningPrecompiledCode()
Checks if VM instances in the process can run precompiled code. This call can be made at any time and...
Definition: dart_vm.cc:205
SkBitmap source
Definition: examples.cpp:28
bool IsFile(const std::string &path)
Definition: file_posix.cc:146
DART_EXPORT Dart_LoadedElf * Dart_LoadELF(const char *filename, uint64_t file_offset, const char **error, const uint8_t **vm_snapshot_data, const uint8_t **vm_snapshot_instrs, const uint8_t **vm_isolate_data, const uint8_t **vm_isolate_instrs)
Please see documentation for Dart_LoadElf_Fd.
Definition: elf_loader.cc:590

◆ FlutterEngineDeinitialize()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineDeinitialize ( FLUTTER_API_SYMBOL(FlutterEngine engine)

Stops running the Flutter engine instance. After this call, the embedder is also guaranteed that no more calls to post tasks onto custom task runners specified by the embedder are made. The Flutter engine handle still needs to be collected via a call to FlutterEngineShutdown.

Parameters
[in]engineThe running engine instance to de-initialize.
Returns
The result of the call to de-initialize the Flutter engine.

Definition at line 2297 of file embedder.cc.

2298 {
2299 if (engine == nullptr) {
2300 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2301 }
2302
2303 auto embedder_engine = reinterpret_cast<flutter::EmbedderEngine*>(engine);
2304 embedder_engine->NotifyDestroyed();
2305 embedder_engine->CollectShell();
2306 return kSuccess;
2307}

◆ FlutterEngineDispatchSemanticsAction()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineDispatchSemanticsAction ( FLUTTER_API_SYMBOL(FlutterEngine engine,
uint64_t  node_id,
FlutterSemanticsAction  action,
const uint8_t *  data,
size_t  data_length 
)

Dispatch a semantics action to the specified semantics node.

Parameters
[in]engineA running engine instance.
[in]node_idThe semantics node identifier.
[in]actionThe semantics action.
[in]dataData associated with the action.
[in]data_lengthThe data length.
Returns
The result of the call.

Definition at line 2855 of file embedder.cc.

2860 {
2861 if (engine == nullptr) {
2862 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2863 }
2864 auto engine_action = static_cast<flutter::SemanticsAction>(action);
2865 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)
2867 node_id, engine_action,
2868 fml::MallocMapping::Copy(data, data_length))) {
2870 "Could not dispatch semantics action.");
2871 }
2872 return kSuccess;
2873}
bool DispatchSemanticsAction(int node_id, flutter::SemanticsAction action, fml::MallocMapping args)
static MallocMapping Copy(const T *begin, const T *end)
Definition: mapping.h:162

◆ FlutterEngineGetCurrentTime()

FLUTTER_EXPORT uint64_t FlutterEngineGetCurrentTime ( )

Get the current time in nanoseconds from the clock used by the flutter engine. This is the system monotonic clock.

Returns
The current time in nanoseconds.

Definition at line 2955 of file embedder.cc.

2955 {
2957}
constexpr int64_t ToNanoseconds() const
Definition: time_delta.h:61
TimeDelta ToEpochDelta() const
Definition: time_point.h:52
static TimePoint Now()
Definition: time_point.cc:49

◆ FlutterEngineGetProcAddresses()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineGetProcAddresses ( FlutterEngineProcTable table)

Gets the table of engine function pointers.

Parameters
[out]tableThe table to fill with pointers. This should be zero-initialized, except for struct_size.
Returns
Returns whether the table was successfully populated.

Definition at line 3335 of file embedder.cc.

3336 {
3337 if (!table) {
3338 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Null table specified.");
3339 }
3340#define SET_PROC(member, function) \
3341 if (STRUCT_HAS_MEMBER(table, member)) { \
3342 table->member = &function; \
3343 }
3344
3345 SET_PROC(CreateAOTData, FlutterEngineCreateAOTData);
3346 SET_PROC(CollectAOTData, FlutterEngineCollectAOTData);
3350 SET_PROC(Deinitialize, FlutterEngineDeinitialize);
3351 SET_PROC(RunInitialized, FlutterEngineRunInitialized);
3352 SET_PROC(SendWindowMetricsEvent, FlutterEngineSendWindowMetricsEvent);
3353 SET_PROC(SendPointerEvent, FlutterEngineSendPointerEvent);
3354 SET_PROC(SendKeyEvent, FlutterEngineSendKeyEvent);
3355 SET_PROC(SendPlatformMessage, FlutterEngineSendPlatformMessage);
3356 SET_PROC(PlatformMessageCreateResponseHandle,
3358 SET_PROC(PlatformMessageReleaseResponseHandle,
3360 SET_PROC(SendPlatformMessageResponse,
3362 SET_PROC(RegisterExternalTexture, FlutterEngineRegisterExternalTexture);
3363 SET_PROC(UnregisterExternalTexture, FlutterEngineUnregisterExternalTexture);
3364 SET_PROC(MarkExternalTextureFrameAvailable,
3366 SET_PROC(UpdateSemanticsEnabled, FlutterEngineUpdateSemanticsEnabled);
3367 SET_PROC(UpdateAccessibilityFeatures,
3371 SET_PROC(ReloadSystemFonts, FlutterEngineReloadSystemFonts);
3372 SET_PROC(TraceEventDurationBegin, FlutterEngineTraceEventDurationBegin);
3373 SET_PROC(TraceEventDurationEnd, FlutterEngineTraceEventDurationEnd);
3374 SET_PROC(TraceEventInstant, FlutterEngineTraceEventInstant);
3375 SET_PROC(PostRenderThreadTask, FlutterEnginePostRenderThreadTask);
3378 SET_PROC(UpdateLocales, FlutterEngineUpdateLocales);
3379 SET_PROC(RunsAOTCompiledDartCode, FlutterEngineRunsAOTCompiledDartCode);
3380 SET_PROC(PostDartObject, FlutterEnginePostDartObject);
3382 SET_PROC(PostCallbackOnAllNativeThreads,
3384 SET_PROC(NotifyDisplayUpdate, FlutterEngineNotifyDisplayUpdate);
3386 SET_PROC(SetNextFrameCallback, FlutterEngineSetNextFrameCallback);
3388 SET_PROC(RemoveView, FlutterEngineRemoveView);
3389#undef SET_PROC
3390
3391 return kSuccess;
3392}
SI F table(const skcms_Curve *curve, F v)
#define SET_PROC(member, function)
void FlutterEngineTraceEventInstant(const char *name)
A profiling utility. Logs a trace duration instant event to the timeline. If the timeline is unavaila...
Definition: embedder.cc:2928
FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable(FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
Mark that a new texture frame is available for a given texture identifier.
Definition: embedder.cc:2809
FlutterEngineResult FlutterEngineRunTask(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterTask *task)
Inform the engine to run the specified task. This task has been given to the engine via the FlutterTa...
Definition: embedder.cc:2959
FlutterEngineResult FlutterEngineOnVsync(FLUTTER_API_SYMBOL(FlutterEngine) engine, intptr_t baton, uint64_t frame_start_time_nanos, uint64_t frame_target_time_nanos)
Notify the engine that a vsync event occurred. A baton passed to the platform via the vsync callback ...
Definition: embedder.cc:2875
FlutterEngineResult FlutterEngineRun(size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
Initialize and run a Flutter engine instance and return a handle to it. This is a convenience method ...
Definition: embedder.cc:1715
FlutterEngineResult FlutterEngineRegisterExternalTexture(FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
Register an external texture with a unique (per engine) identifier. Only rendering backends that supp...
Definition: embedder.cc:2769
FlutterEngineResult FlutterEngineUpdateLocales(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterLocale **locales, size_t locales_count)
Notify a running engine instance that the locale has been updated. The preferred locale must be the f...
Definition: embedder.cc:3004
FlutterEngineResult FlutterEngineScheduleFrame(FLUTTER_API_SYMBOL(FlutterEngine) engine)
Schedule a new frame to redraw the content.
Definition: embedder.cc:3293
void FlutterEngineTraceEventDurationBegin(const char *name)
A profiling utility. Logs a trace duration begin event to the timeline. If the timeline is unavailabl...
Definition: embedder.cc:2919
FlutterEngineResult FlutterEngineSendWindowMetricsEvent(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterWindowMetricsEvent *flutter_metrics)
Definition: embedder.cc:2320
uint64_t FlutterEngineGetCurrentTime()
Get the current time in nanoseconds from the clock used by the flutter engine. This is the system mon...
Definition: embedder.cc:2955
FlutterEngineResult FlutterEngineSetNextFrameCallback(FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *user_data)
Schedule a callback to be called after the next frame is drawn. This must be called from the platform...
Definition: embedder.cc:3305
FlutterEngineResult FlutterEnginePostRenderThreadTask(FLUTTER_API_SYMBOL(FlutterEngine) engine, VoidCallback callback, void *baton)
Posts a task onto the Flutter render thread. Typically, this may be called from any thread as long as...
Definition: embedder.cc:2933
FlutterEngineResult FlutterEngineDispatchSemanticsAction(FLUTTER_API_SYMBOL(FlutterEngine) engine, uint64_t node_id, FlutterSemanticsAction action, const uint8_t *data, size_t data_length)
Dispatch a semantics action to the specified semantics node.
Definition: embedder.cc:2855
FlutterEngineResult FlutterEnginePostDartObject(FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterEngineDartPort port, const FlutterEngineDartObject *object)
Posts a Dart object to specified send port. The corresponding receive port for send port can be in an...
Definition: embedder.cc:3067
FLUTTER_EXPORT FlutterEngineResult FlutterEngineDeinitialize(FLUTTER_API_SYMBOL(FlutterEngine) engine)
Stops running the Flutter engine instance. After this call, the embedder is also guaranteed that no m...
Definition: embedder.cc:2297
FlutterEngineResult FlutterEnginePostCallbackOnAllNativeThreads(FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterNativeThreadCallback callback, void *user_data)
Schedule a callback to be run on all engine managed threads. The engine will attempt to service this ...
Definition: embedder.cc:3213
FLUTTER_EXPORT FlutterEngineResult FlutterEngineAddView(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterAddViewInfo *info)
Adds a view.
Definition: embedder.cc:2193
FlutterEngineResult FlutterEngineInitialize(size_t version, const FlutterRendererConfig *config, const FlutterProjectArgs *args, void *user_data, FLUTTER_API_SYMBOL(FlutterEngine) *engine_out)
Initialize a Flutter engine instance. This does not run the Flutter application code till the Flutter...
Definition: embedder.cc:1731
FlutterEngineResult FlutterEngineUpdateAccessibilityFeatures(FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterAccessibilityFeature flags)
Sets additional accessibility features.
Definition: embedder.cc:2841
FlutterEngineResult FlutterEngineShutdown(FLUTTER_API_SYMBOL(FlutterEngine) engine)
Shuts down a Flutter engine instance. The engine handle is no longer valid for any calls in the embed...
Definition: embedder.cc:2309
FlutterEngineResult FlutterPlatformMessageCreateResponseHandle(FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterDataCallback data_callback, void *user_data, FlutterPlatformMessageResponseHandle **response_out)
Creates a platform message response handle that allows the embedder to set a native callback for a re...
Definition: embedder.cc:2687
FlutterEngineResult FlutterEngineCollectAOTData(FlutterEngineAOTData data)
Collects the AOT data.
Definition: embedder.cc:1480
FlutterEngineResult FlutterEngineNotifyDisplayUpdate(FLUTTER_API_SYMBOL(FlutterEngine) raw_engine, const FlutterEngineDisplaysUpdateType update_type, const FlutterEngineDisplay *embedder_displays, size_t display_count)
Posts updates corresponding to display changes to a running engine instance.
Definition: embedder.cc:3252
FlutterEngineResult FlutterEngineSendPlatformMessage(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessage *flutter_message)
Definition: embedder.cc:2636
bool FlutterEngineRunsAOTCompiledDartCode(void)
Returns if the Flutter engine instance will run AOT compiled Dart code. This call has no threading re...
Definition: embedder.cc:3063
FlutterEngineResult FlutterEngineReloadSystemFonts(FLUTTER_API_SYMBOL(FlutterEngine) engine)
Reloads the system fonts in engine.
Definition: embedder.cc:2902
FlutterEngineResult FlutterEngineSendPointerEvent(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPointerEvent *pointers, size_t events_count)
Definition: embedder.cc:2429
FlutterEngineResult FlutterEngineRunInitialized(FLUTTER_API_SYMBOL(FlutterEngine) engine)
Runs an initialized engine instance. An engine can be initialized via FlutterEngineInitialize....
Definition: embedder.cc:2154
FlutterEngineResult FlutterEngineNotifyLowMemoryWarning(FLUTTER_API_SYMBOL(FlutterEngine) raw_engine)
Posts a low memory notification to a running engine instance. The engine will do its best to release ...
Definition: embedder.cc:3191
FlutterEngineResult FlutterEngineUnregisterExternalTexture(FLUTTER_API_SYMBOL(FlutterEngine) engine, int64_t texture_identifier)
Unregister a previous texture registration.
Definition: embedder.cc:2788
FlutterEngineResult FlutterEngineUpdateSemanticsEnabled(FLUTTER_API_SYMBOL(FlutterEngine) engine, bool enabled)
Enable or disable accessibility semantics.
Definition: embedder.cc:2827
FlutterEngineResult FlutterEngineSendKeyEvent(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterKeyEvent *event, FlutterKeyEventCallback callback, void *user_data)
Sends a key event to the engine. The framework will decide whether to handle this event in a synchron...
Definition: embedder.cc:2581
void FlutterEngineTraceEventDurationEnd(const char *name)
A profiling utility. Logs a trace duration end event to the timeline. If the timeline is unavailable ...
Definition: embedder.cc:2924
FlutterEngineResult FlutterEngineSendPlatformMessageResponse(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterPlatformMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
Send a response from the native side to a platform message from the Dart Flutter application.
Definition: embedder.cc:2737
FLUTTER_EXPORT FlutterEngineResult FlutterEngineRemoveView(FLUTTER_API_SYMBOL(FlutterEngine) engine, const FlutterRemoveViewInfo *info)
Removes a view.
Definition: embedder.cc:2254
FlutterEngineResult FlutterPlatformMessageReleaseResponseHandle(FLUTTER_API_SYMBOL(FlutterEngine) engine, FlutterPlatformMessageResponseHandle *response)
Collects the handle created using FlutterPlatformMessageCreateResponseHandle.
Definition: embedder.cc:2722
FlutterEngineResult FlutterEngineCreateAOTData(const FlutterEngineAOTDataSource *source, FlutterEngineAOTData *data_out)
Creates the necessary data structures to launch a Flutter Dart application in AOT mode....
Definition: embedder.cc:1426
static void Shutdown(Dart_NativeArguments args)
static void DispatchSemanticsAction(JNIEnv *env, jobject jcaller, jlong shell_holder, jint id, jint action, jobject args, jint args_position)
static void NotifyLowMemoryWarning(JNIEnv *env, jobject obj, jlong shell_holder)
static void ScheduleFrame(JNIEnv *env, jobject jcaller, jlong shell_holder)
void Initialize(zx::channel directory_request, std::optional< zx::eventpair > view_ref)
Initializes Dart bindings for the Fuchsia application model.
Definition: fuchsia.cc:103
#define GetCurrentTime()

◆ FlutterEngineInitialize()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineInitialize ( size_t  version,
const FlutterRendererConfig config,
const FlutterProjectArgs args,
void *  user_data,
FLUTTER_API_SYMBOL(FlutterEngine) *  engine_out 
)

Initialize a Flutter engine instance. This does not run the Flutter application code till the FlutterEngineRunInitialized call is made. Besides Flutter application code, no tasks are scheduled on embedder managed task runners either. This allows embedders providing custom task runners to the Flutter engine to obtain a handle to the Flutter engine before the engine can post tasks on these task runners.

Parameters
[in]versionThe Flutter embedder API version. Must be FLUTTER_ENGINE_VERSION.
[in]configThe renderer configuration.
[in]argsThe Flutter project arguments.
user_dataA user data baton passed back to embedders in callbacks.
[out]engine_outThe engine handle on successful engine creation.
Returns
The result of the call to initialize the Flutter engine.

Definition at line 1731 of file embedder.cc.

1736 {
1737 // Step 0: Figure out arguments for shell creation.
1739 return LOG_EMBEDDER_ERROR(
1741 "Flutter embedder version mismatch. There has been a breaking change. "
1742 "Please consult the changelog and update the embedder.");
1743 }
1744
1745 if (engine_out == nullptr) {
1747 "The engine out parameter was missing.");
1748 }
1749
1750 if (args == nullptr) {
1752 "The Flutter project arguments were missing.");
1753 }
1754
1755 if (SAFE_ACCESS(args, assets_path, nullptr) == nullptr) {
1756 return LOG_EMBEDDER_ERROR(
1758 "The assets path in the Flutter project arguments was missing.");
1759 }
1760
1761 if (SAFE_ACCESS(args, main_path__unused__, nullptr) != nullptr) {
1762 FML_LOG(WARNING)
1763 << "FlutterProjectArgs.main_path is deprecated and should be set null.";
1764 }
1765
1766 if (SAFE_ACCESS(args, packages_path__unused__, nullptr) != nullptr) {
1767 FML_LOG(WARNING) << "FlutterProjectArgs.packages_path is deprecated and "
1768 "should be set null.";
1769 }
1770
1771 if (!IsRendererValid(config)) {
1773 "The renderer configuration was invalid.");
1774 }
1775
1776 std::string icu_data_path;
1777 if (SAFE_ACCESS(args, icu_data_path, nullptr) != nullptr) {
1778 icu_data_path = SAFE_ACCESS(args, icu_data_path, nullptr);
1779 }
1780
1781#if !SLIMPELLER
1782 if (SAFE_ACCESS(args, persistent_cache_path, nullptr) != nullptr) {
1783 std::string persistent_cache_path =
1784 SAFE_ACCESS(args, persistent_cache_path, nullptr);
1786 }
1787
1788 if (SAFE_ACCESS(args, is_persistent_cache_read_only, false)) {
1790 }
1791#endif // !SLIMPELLER
1792
1793 fml::CommandLine command_line;
1794 if (SAFE_ACCESS(args, command_line_argc, 0) != 0 &&
1795 SAFE_ACCESS(args, command_line_argv, nullptr) != nullptr) {
1796 command_line = fml::CommandLineFromArgcArgv(
1797 SAFE_ACCESS(args, command_line_argc, 0),
1798 SAFE_ACCESS(args, command_line_argv, nullptr));
1799 }
1800
1802
1803 if (SAFE_ACCESS(args, aot_data, nullptr)) {
1804 if (SAFE_ACCESS(args, vm_snapshot_data, nullptr) ||
1808 return LOG_EMBEDDER_ERROR(
1810 "Multiple AOT sources specified. Embedders should provide either "
1811 "*_snapshot_* buffers or aot_data, not both.");
1812 }
1813 }
1814
1817 } else {
1819 }
1820
1821 settings.icu_data_path = icu_data_path;
1822 settings.assets_path = args->assets_path;
1823 settings.leak_vm = !SAFE_ACCESS(args, shutdown_dart_vm_when_done, false);
1824 settings.old_gen_heap_size = SAFE_ACCESS(args, dart_old_gen_heap_size, -1);
1825
1827 // Verify the assets path contains Dart 2 kernel assets.
1828 const std::string kApplicationKernelSnapshotFileName = "kernel_blob.bin";
1829 std::string application_kernel_path = fml::paths::JoinPaths(
1831 if (!fml::IsFile(application_kernel_path)) {
1832 return LOG_EMBEDDER_ERROR(
1834 "Not running in AOT mode but could not resolve the kernel binary.");
1835 }
1836 settings.application_kernel_asset = kApplicationKernelSnapshotFileName;
1837 }
1838
1839 settings.task_observer_add = [](intptr_t key, const fml::closure& callback) {
1841 };
1842 settings.task_observer_remove = [](intptr_t key) {
1844 };
1845 if (SAFE_ACCESS(args, root_isolate_create_callback, nullptr) != nullptr) {
1847 SAFE_ACCESS(args, root_isolate_create_callback, nullptr);
1848 settings.root_isolate_create_callback =
1849 [callback, user_data](const auto& isolate) { callback(user_data); };
1850 }
1851 if (SAFE_ACCESS(args, log_message_callback, nullptr) != nullptr) {
1853 SAFE_ACCESS(args, log_message_callback, nullptr);
1854 settings.log_message_callback = [callback, user_data](
1855 const std::string& tag,
1856 const std::string& message) {
1857 callback(tag.c_str(), message.c_str(), user_data);
1858 };
1859 }
1860 if (SAFE_ACCESS(args, log_tag, nullptr) != nullptr) {
1861 settings.log_tag = SAFE_ACCESS(args, log_tag, nullptr);
1862 }
1863
1864 bool has_update_semantics_2_callback =
1865 SAFE_ACCESS(args, update_semantics_callback2, nullptr) != nullptr;
1866 bool has_update_semantics_callback =
1867 SAFE_ACCESS(args, update_semantics_callback, nullptr) != nullptr;
1868 bool has_legacy_update_semantics_callback =
1869 SAFE_ACCESS(args, update_semantics_node_callback, nullptr) != nullptr ||
1870 SAFE_ACCESS(args, update_semantics_custom_action_callback, nullptr) !=
1871 nullptr;
1872
1873 int semantic_callback_count = (has_update_semantics_2_callback ? 1 : 0) +
1874 (has_update_semantics_callback ? 1 : 0) +
1875 (has_legacy_update_semantics_callback ? 1 : 0);
1876
1877 if (semantic_callback_count > 1) {
1878 return LOG_EMBEDDER_ERROR(
1880 "Multiple semantics update callbacks provided. "
1881 "Embedders should provide either `update_semantics_callback2`, "
1882 "`update_semantics_callback`, or both "
1883 "`update_semantics_node_callback` and "
1884 "`update_semantics_custom_action_callback`.");
1885 }
1886
1888 update_semantics_callback =
1890
1892 platform_message_response_callback = nullptr;
1893 if (SAFE_ACCESS(args, platform_message_callback, nullptr) != nullptr) {
1894 platform_message_response_callback =
1895 [ptr = args->platform_message_callback,
1896 user_data](std::unique_ptr<flutter::PlatformMessage> message) {
1897 auto handle = new FlutterPlatformMessageResponseHandle();
1898 const FlutterPlatformMessage incoming_message = {
1899 sizeof(FlutterPlatformMessage), // struct_size
1900 message->channel().c_str(), // channel
1901 message->data().GetMapping(), // message
1902 message->data().GetSize(), // message_size
1903 handle, // response_handle
1904 };
1905 handle->message = std::move(message);
1906 return ptr(&incoming_message, user_data);
1907 };
1908 }
1909
1910 flutter::VsyncWaiterEmbedder::VsyncCallback vsync_callback = nullptr;
1911 if (SAFE_ACCESS(args, vsync_callback, nullptr) != nullptr) {
1912 vsync_callback = [ptr = args->vsync_callback, user_data](intptr_t baton) {
1913 return ptr(user_data, baton);
1914 };
1915 }
1916
1918 compute_platform_resolved_locale_callback = nullptr;
1919 if (SAFE_ACCESS(args, compute_platform_resolved_locale_callback, nullptr) !=
1920 nullptr) {
1921 compute_platform_resolved_locale_callback =
1922 [ptr = args->compute_platform_resolved_locale_callback](
1923 const std::vector<std::string>& supported_locales_data) {
1924 const size_t number_of_strings_per_locale = 3;
1925 size_t locale_count =
1926 supported_locales_data.size() / number_of_strings_per_locale;
1927 std::vector<FlutterLocale> supported_locales;
1928 std::vector<const FlutterLocale*> supported_locales_ptr;
1929 for (size_t i = 0; i < locale_count; ++i) {
1930 supported_locales.push_back(
1931 {.struct_size = sizeof(FlutterLocale),
1932 .language_code =
1933 supported_locales_data[i * number_of_strings_per_locale +
1934 0]
1935 .c_str(),
1936 .country_code =
1937 supported_locales_data[i * number_of_strings_per_locale +
1938 1]
1939 .c_str(),
1940 .script_code =
1941 supported_locales_data[i * number_of_strings_per_locale +
1942 2]
1943 .c_str(),
1944 .variant_code = nullptr});
1945 supported_locales_ptr.push_back(&supported_locales[i]);
1946 }
1947
1948 const FlutterLocale* result =
1949 ptr(supported_locales_ptr.data(), locale_count);
1950
1951 std::unique_ptr<std::vector<std::string>> out =
1952 std::make_unique<std::vector<std::string>>();
1953 if (result) {
1954 std::string language_code(SAFE_ACCESS(result, language_code, ""));
1955 if (language_code != "") {
1956 out->push_back(language_code);
1957 out->emplace_back(SAFE_ACCESS(result, country_code, ""));
1958 out->emplace_back(SAFE_ACCESS(result, script_code, ""));
1959 }
1960 }
1961 return out;
1962 };
1963 }
1964
1966 on_pre_engine_restart_callback = nullptr;
1967 if (SAFE_ACCESS(args, on_pre_engine_restart_callback, nullptr) != nullptr) {
1968 on_pre_engine_restart_callback = [ptr =
1969 args->on_pre_engine_restart_callback,
1970 user_data]() { return ptr(user_data); };
1971 }
1972
1974 nullptr;
1975 if (SAFE_ACCESS(args, channel_update_callback, nullptr) != nullptr) {
1976 channel_update_callback = [ptr = args->channel_update_callback, user_data](
1977 const std::string& name, bool listening) {
1979 listening};
1980 ptr(&update, user_data);
1981 };
1982 }
1983
1984 auto external_view_embedder_result = InferExternalViewEmbedderFromArgs(
1985 SAFE_ACCESS(args, compositor, nullptr), settings.enable_impeller);
1986 if (external_view_embedder_result.second) {
1988 "Compositor arguments were invalid.");
1989 }
1990
1992 {
1993 update_semantics_callback, //
1994 platform_message_response_callback, //
1995 vsync_callback, //
1996 compute_platform_resolved_locale_callback, //
1997 on_pre_engine_restart_callback, //
1998 channel_update_callback, //
1999 };
2000
2001 auto on_create_platform_view = InferPlatformViewCreationCallback(
2002 config, user_data, platform_dispatch_table,
2003 std::move(external_view_embedder_result.first), settings.enable_impeller);
2004
2005 if (!on_create_platform_view) {
2006 return LOG_EMBEDDER_ERROR(
2008 "Could not infer platform view creation callback.");
2009 }
2010
2012 [](flutter::Shell& shell) {
2013 return std::make_unique<flutter::Rasterizer>(shell);
2014 };
2015
2016 using ExternalTextureResolver = flutter::EmbedderExternalTextureResolver;
2017 std::unique_ptr<ExternalTextureResolver> external_texture_resolver;
2018 external_texture_resolver = std::make_unique<ExternalTextureResolver>();
2019
2020#ifdef SHELL_ENABLE_GL
2022 external_texture_callback;
2023 if (config->type == kOpenGL) {
2024 const FlutterOpenGLRendererConfig* open_gl_config = &config->open_gl;
2025 if (SAFE_ACCESS(open_gl_config, gl_external_texture_frame_callback,
2026 nullptr) != nullptr) {
2027 external_texture_callback =
2028 [ptr = open_gl_config->gl_external_texture_frame_callback, user_data](
2029 int64_t texture_identifier, size_t width,
2030 size_t height) -> std::unique_ptr<FlutterOpenGLTexture> {
2031 std::unique_ptr<FlutterOpenGLTexture> texture =
2032 std::make_unique<FlutterOpenGLTexture>();
2033 if (!ptr(user_data, texture_identifier, width, height, texture.get())) {
2034 return nullptr;
2035 }
2036 return texture;
2037 };
2038 external_texture_resolver =
2039 std::make_unique<ExternalTextureResolver>(external_texture_callback);
2040 }
2041 }
2042#endif
2043#ifdef SHELL_ENABLE_METAL
2045 external_texture_metal_callback;
2046 if (config->type == kMetal) {
2047 const FlutterMetalRendererConfig* metal_config = &config->metal;
2048 if (SAFE_ACCESS(metal_config, external_texture_frame_callback, nullptr)) {
2049 external_texture_metal_callback =
2050 [ptr = metal_config->external_texture_frame_callback, user_data](
2051 int64_t texture_identifier, size_t width,
2052 size_t height) -> std::unique_ptr<FlutterMetalExternalTexture> {
2053 std::unique_ptr<FlutterMetalExternalTexture> texture =
2054 std::make_unique<FlutterMetalExternalTexture>();
2055 texture->struct_size = sizeof(FlutterMetalExternalTexture);
2056 if (!ptr(user_data, texture_identifier, width, height, texture.get())) {
2057 return nullptr;
2058 }
2059 return texture;
2060 };
2061 external_texture_resolver = std::make_unique<ExternalTextureResolver>(
2062 external_texture_metal_callback);
2063 }
2064 }
2065#endif
2066 auto custom_task_runners = SAFE_ACCESS(args, custom_task_runners, nullptr);
2067 auto thread_config_callback = [&custom_task_runners](
2068 const fml::Thread::ThreadConfig& config) {
2070 if (!custom_task_runners || !custom_task_runners->thread_priority_setter) {
2071 return;
2072 }
2074 switch (config.priority) {
2077 break;
2080 break;
2083 break;
2086 break;
2087 }
2088 custom_task_runners->thread_priority_setter(priority);
2089 };
2090 auto thread_host =
2092 custom_task_runners, thread_config_callback);
2093
2094 if (!thread_host || !thread_host->IsValid()) {
2096 "Could not set up or infer thread configuration "
2097 "to run the Flutter engine on.");
2098 }
2099
2100 auto task_runners = thread_host->GetTaskRunners();
2101
2102 if (!task_runners.IsValid()) {
2104 "Task runner configuration was invalid.");
2105 }
2106
2107 auto run_configuration =
2109
2110 if (SAFE_ACCESS(args, custom_dart_entrypoint, nullptr) != nullptr) {
2111 auto dart_entrypoint = std::string{args->custom_dart_entrypoint};
2112 if (!dart_entrypoint.empty()) {
2113 run_configuration.SetEntrypoint(std::move(dart_entrypoint));
2114 }
2115 }
2116
2117 if (SAFE_ACCESS(args, dart_entrypoint_argc, 0) > 0) {
2118 if (SAFE_ACCESS(args, dart_entrypoint_argv, nullptr) == nullptr) {
2120 "Could not determine Dart entrypoint arguments "
2121 "as dart_entrypoint_argc "
2122 "was set, but dart_entrypoint_argv was null.");
2123 }
2124 std::vector<std::string> arguments(args->dart_entrypoint_argc);
2125 for (int i = 0; i < args->dart_entrypoint_argc; ++i) {
2126 arguments[i] = std::string{args->dart_entrypoint_argv[i]};
2127 }
2128 run_configuration.SetEntrypointArgs(std::move(arguments));
2129 }
2130
2131 if (!run_configuration.IsValid()) {
2132 return LOG_EMBEDDER_ERROR(
2134 "Could not infer the Flutter project to run from given arguments.");
2135 }
2136
2137 // Create the engine but don't launch the shell or run the root isolate.
2138 auto embedder_engine = std::make_unique<flutter::EmbedderEngine>(
2139 std::move(thread_host), //
2140 std::move(task_runners), //
2141 std::move(settings), //
2142 std::move(run_configuration), //
2143 on_create_platform_view, //
2144 on_create_rasterizer, //
2145 std::move(external_texture_resolver) //
2146 );
2147
2148 // Release the ownership of the embedder engine to the caller.
2149 *engine_out = reinterpret_cast<FLUTTER_API_SYMBOL(FlutterEngine)>(
2150 embedder_engine.release());
2151 return kSuccess;
2152}
std::function< std::unique_ptr< FlutterOpenGLTexture >(int64_t, size_t, size_t)> ExternalTextureCallback
std::function< std::unique_ptr< FlutterMetalExternalTexture >(int64_t, size_t, size_t)> ExternalTextureCallback
static std::unique_ptr< EmbedderThreadHost > CreateEmbedderOrEngineManagedThreadHost(const FlutterCustomTaskRunners *custom_task_runners, const flutter::ThreadConfigSetter &config_setter=fml::Thread::SetCurrentThreadName)
static void SetCacheDirectoryPath(std::string path)
std::function< void()> OnPreEngineRestartCallback
std::function< void(std::unique_ptr< PlatformMessage >)> PlatformMessageResponseCallback
std::function< std::unique_ptr< std::vector< std::string > >(const std::vector< std::string > &supported_locale_data)> ComputePlatformResolvedLocaleCallback
std::function< void(const std::string &, bool)> ChanneUpdateCallback
std::function< void(flutter::SemanticsNodeUpdates update, flutter::CustomAccessibilityActionUpdates actions)> UpdateSemanticsCallback
static RunConfiguration InferFromSettings(const Settings &settings, const fml::RefPtr< fml::TaskRunner > &io_worker=nullptr, IsolateLaunchType launch_type=IsolateLaunchType::kNewGroup)
Attempts to infer a run configuration from the settings object. This tries to create a run configurat...
std::function< std::unique_ptr< T >(Shell &)> CreateCallback
Definition: shell.h:120
std::function< void(intptr_t)> VsyncCallback
void RemoveTaskObserver(intptr_t key)
Definition: message_loop.cc:68
void AddTaskObserver(intptr_t key, const fml::closure &callback)
Definition: message_loop.cc:64
@ kNormal
Default priority level.
@ kRaster
Suitable for thread which raster data.
@ kBackground
Suitable for threads that shouldn't disrupt high priority work.
@ kDisplay
Suitable for threads which generate data for the display.
static void SetCurrentThreadName(const ThreadConfig &config)
Definition: thread.cc:135
static flutter::Shell::CreateCallback< flutter::PlatformView > InferPlatformViewCreationCallback(const FlutterRendererConfig *config, void *user_data, const flutter::PlatformViewEmbedder::PlatformDispatchTable &platform_dispatch_table, std::unique_ptr< flutter::EmbedderExternalViewEmbedder > external_view_embedder, bool enable_impeller)
Definition: embedder.cc:713
static std::pair< std::unique_ptr< flutter::EmbedderExternalViewEmbedder >, bool > InferExternalViewEmbedderFromArgs(const FlutterCompositor *compositor, bool enable_impeller)
Definition: embedder.cc:1283
static bool IsRendererValid(const FlutterRendererConfig *config)
Definition: embedder.cc:227
flutter::PlatformViewEmbedder::UpdateSemanticsCallback CreateEmbedderSemanticsUpdateCallback(const FlutterProjectArgs *args, void *user_data)
Definition: embedder.cc:1669
void PopulateJITSnapshotMappingCallbacks(const FlutterProjectArgs *args, flutter::Settings &settings)
Definition: embedder.cc:1493
void PopulateAOTSnapshotMappingCallbacks(const FlutterProjectArgs *args, flutter::Settings &settings)
Definition: embedder.cc:1536
struct _FlutterPlatformMessageResponseHandle FlutterPlatformMessageResponseHandle
Definition: embedder.h:1159
struct _FlutterEngine * FLUTTER_API_SYMBOL(FlutterEngine)
Definition: embedder.h:269
void(* FlutterLogMessageCallback)(const char *, const char *, void *)
Definition: embedder.h:2130
#define FLUTTER_ENGINE_VERSION
Definition: embedder.h:70
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
#define FML_LOG(severity)
Definition: logging.h:82
static const char * kApplicationKernelSnapshotFileName
Win32Message message
FlTexture * texture
const uint8_t * isolate_snapshot_data
Definition: gen_snapshot.cc:69
const uint8_t * vm_snapshot_data
Definition: main_impl.cc:52
const uint8_t * vm_snapshot_instructions
Definition: main_impl.cc:53
const uint8_t * isolate_snapshot_instructions
Definition: gen_snapshot.cc:70
Settings SettingsFromCommandLine(const fml::CommandLine &command_line)
Definition: switches.cc:228
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32
std::string JoinPaths(std::initializer_list< std::string > components)
Definition: paths.cc:14
CommandLine CommandLineFromArgcArgv(int argc, const char *const *argv)
Definition: command_line.h:233
std::function< void()> closure
Definition: closure.h:14
Definition: update.py:1
int32_t height
int32_t width
An update to whether a message channel has a listener set or not.
Definition: embedder.h:1535
FlutterMetalTextureFrameCallback external_texture_frame_callback
Definition: embedder.h:704
TextureFrameCallback gl_external_texture_frame_callback
Definition: embedder.h:559
FlutterMetalRendererConfig metal
Definition: embedder.h:831
FlutterOpenGLRendererConfig open_gl
Definition: embedder.h:829
FlutterRendererType type
Definition: embedder.h:827
The ThreadConfig is the thread info include thread name, thread priority.
Definition: thread.h:35

◆ FlutterEngineMarkExternalTextureFrameAvailable()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable ( FLUTTER_API_SYMBOL(FlutterEngine engine,
int64_t  texture_identifier 
)

Mark that a new texture frame is available for a given texture identifier.

See also
FlutterEngineRegisterExternalTexture()
FlutterEngineUnregisterExternalTexture()
Parameters
[in]engineA running engine instance.
[in]texture_identifierThe identifier of the texture whose frame has been updated.
Returns
The result of the call.

Definition at line 2809 of file embedder.cc.

2811 {
2812 if (engine == nullptr) {
2813 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2814 }
2815 if (texture_identifier == 0) {
2816 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid texture identifier.");
2817 }
2818 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)
2819 ->MarkTextureFrameAvailable(texture_identifier)) {
2820 return LOG_EMBEDDER_ERROR(
2822 "Could not mark the texture frame as being available.");
2823 }
2824 return kSuccess;
2825}
static void MarkTextureFrameAvailable(JNIEnv *env, jobject jcaller, jlong shell_holder, jlong texture_id)

◆ FlutterEngineNotifyDisplayUpdate()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineNotifyDisplayUpdate ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterEngineDisplaysUpdateType  update_type,
const FlutterEngineDisplay displays,
size_t  display_count 
)

Posts updates corresponding to display changes to a running engine instance.

Parameters
[in]update_typeThe type of update pushed to the engine.
[in]displaysThe displays affected by this update.
[in]display_countSize of the displays array, must be at least 1.
Returns
the result of the call made to the engine.

Definition at line 3252 of file embedder.cc.

3256 {
3257 if (raw_engine == nullptr) {
3258 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3259 }
3260
3261 if (!ValidDisplayConfiguration(embedder_displays, display_count)) {
3262 return LOG_EMBEDDER_ERROR(
3264 "Invalid FlutterEngineDisplay configuration specified.");
3265 }
3266
3267 auto engine = reinterpret_cast<flutter::EmbedderEngine*>(raw_engine);
3268
3269 switch (update_type) {
3271 std::vector<std::unique_ptr<flutter::Display>> displays;
3272 const auto* display = embedder_displays;
3273 for (size_t i = 0; i < display_count; i++) {
3274 displays.push_back(std::make_unique<flutter::Display>(
3275 SAFE_ACCESS(display, display_id, i), //
3276 SAFE_ACCESS(display, refresh_rate, 0), //
3277 SAFE_ACCESS(display, width, 0), //
3278 SAFE_ACCESS(display, height, 0), //
3279 SAFE_ACCESS(display, device_pixel_ratio, 1)));
3280 display = reinterpret_cast<const FlutterEngineDisplay*>(
3281 reinterpret_cast<const uint8_t*>(display) + display->struct_size);
3282 }
3283 engine->GetShell().OnDisplayUpdates(std::move(displays));
3284 return kSuccess;
3285 }
3286 default:
3287 return LOG_EMBEDDER_ERROR(
3289 "Invalid FlutterEngineDisplaysUpdateType type specified.");
3290 }
3291}

◆ FlutterEngineNotifyLowMemoryWarning()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineNotifyLowMemoryWarning ( FLUTTER_API_SYMBOL(FlutterEngine engine)

Posts a low memory notification to a running engine instance. The engine will do its best to release non-critical resources in response. It is not guaranteed that the resource would have been collected by the time this call returns however. The notification is posted to engine subsystems that may be operating on other threads.

Flutter applications can respond to these notifications by setting WidgetsBindingObserver.didHaveMemoryPressure observers.

Parameters
[in]engineA running engine instance.
Returns
If the low memory notification was sent to the running engine instance.

Definition at line 3191 of file embedder.cc.

3192 {
3193 auto engine = reinterpret_cast<flutter::EmbedderEngine*>(raw_engine);
3194 if (engine == nullptr || !engine->IsValid()) {
3195 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine was invalid.");
3196 }
3197
3198 engine->GetShell().NotifyLowMemoryWarning();
3199
3200 rapidjson::Document document;
3201 auto& allocator = document.GetAllocator();
3202
3203 document.SetObject();
3204 document.AddMember("type", "memoryPressure", allocator);
3205
3206 return DispatchJSONPlatformMessage(raw_engine, document, "flutter/system")
3207 ? kSuccess
3210 "Could not dispatch the low memory notification message.");
3211}
static bool DispatchJSONPlatformMessage(FLUTTER_API_SYMBOL(FlutterEngine) engine, const rapidjson::Document &document, const std::string &channel_name)
Definition: embedder.cc:2972

◆ FlutterEngineOnVsync()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineOnVsync ( FLUTTER_API_SYMBOL(FlutterEngine engine,
intptr_t  baton,
uint64_t  frame_start_time_nanos,
uint64_t  frame_target_time_nanos 
)

Notify the engine that a vsync event occurred. A baton passed to the platform via the vsync callback must be returned. This call must be made on the thread on which the call to FlutterEngineRun was made.

See also
FlutterEngineGetCurrentTime()
Attention
That frame timepoints are in nanoseconds.
The system monotonic clock is used as the timebase.
Parameters
[in]engine.A running engine instance.
[in]batonThe baton supplied by the engine.
[in]frame_start_time_nanosThe point at which the vsync event occurred or will occur. If the time point is in the future, the engine will wait till that point to begin its frame workload.
[in]frame_target_time_nanosThe point at which the embedder anticipates the next vsync to occur. This is a hint the engine uses to schedule Dart VM garbage collection in periods in which the various threads are most likely to be idle. For example, for a 60Hz display, embedders should add 16.6 * 1e6 to the frame time field.
Returns
The result of the call.

Definition at line 2875 of file embedder.cc.

2879 {
2880 if (engine == nullptr) {
2881 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2882 }
2883
2884 TRACE_EVENT0("flutter", "FlutterEngineOnVsync");
2885
2886 auto start_time = fml::TimePoint::FromEpochDelta(
2887 fml::TimeDelta::FromNanoseconds(frame_start_time_nanos));
2888
2889 auto target_time = fml::TimePoint::FromEpochDelta(
2890 fml::TimeDelta::FromNanoseconds(frame_target_time_nanos));
2891
2892 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)->OnVsyncEvent(
2893 baton, start_time, target_time)) {
2894 return LOG_EMBEDDER_ERROR(
2896 "Could not notify the running engine instance of a Vsync event.");
2897 }
2898
2899 return kSuccess;
2900}
static constexpr TimeDelta FromNanoseconds(int64_t nanos)
Definition: time_delta.h:40
static constexpr TimePoint FromEpochDelta(TimeDelta ticks)
Definition: time_point.h:43
#define TRACE_EVENT0(category_group, name)
Definition: trace_event.h:131

◆ FlutterEnginePostCallbackOnAllNativeThreads()

FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostCallbackOnAllNativeThreads ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterNativeThreadCallback  callback,
void *  user_data 
)

Schedule a callback to be run on all engine managed threads. The engine will attempt to service this callback the next time the message loop for each managed thread is idle. Since the engine manages the entire lifecycle of multiple threads, there is no opportunity for the embedders to finely tune the priorities of threads directly, or, perform other thread specific configuration (for example, setting thread names for tracing). This callback gives embedders a chance to affect such tuning.

Attention
This call is expensive and must be made as few times as possible. The callback must also return immediately as not doing so may risk performance issues (especially for callbacks of type kFlutterNativeThreadTypeUI and kFlutterNativeThreadTypeRender).
Some callbacks (especially the ones of type kFlutterNativeThreadTypeWorker) may be called after the FlutterEngine instance has shut down. Embedders must be careful in handling the lifecycle of objects associated with the user data baton.
In case there are multiple running Flutter engine instances, their workers are shared.
Parameters
[in]engineA running engine instance.
[in]callbackThe callback that will get called multiple times on each engine managed thread.
[in]user_dataA baton passed by the engine to the callback. This baton is not interpreted by the engine in any way.
Returns
Returns if the callback was successfully posted to all threads.

Definition at line 3213 of file embedder.cc.

3216 {
3217 if (engine == nullptr) {
3218 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3219 }
3220
3221 if (callback == nullptr) {
3223 "Invalid native thread callback.");
3224 }
3225
3226 return reinterpret_cast<flutter::EmbedderEngine*>(engine)
3227 ->PostTaskOnEngineManagedNativeThreads(
3230 })
3231 ? kSuccess
3233 "Internal error while attempting to post "
3234 "tasks to all threads.");
3235}
GLenum type

◆ FlutterEnginePostDartObject()

FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostDartObject ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterEngineDartPort  port,
const FlutterEngineDartObject object 
)

Posts a Dart object to specified send port. The corresponding receive port for send port can be in any isolate running in the VM. This isolate can also be the root isolate for an unrelated engine. The engine parameter is necessary only to ensure the call is not made when no engine (and hence no VM) is running.

Unlike the platform messages mechanism, there are no threading restrictions when using this API. Message can be posted on any thread and they will be made available to isolate on which the corresponding send port is listening.

However, it is the embedders responsibility to ensure that the call is not made during an ongoing call the FlutterEngineDeinitialize or FlutterEngineShutdown on another thread.

Parameters
[in]engineA running engine instance.
[in]portThe send port to send the object to.
[in]objectThe object to send to the isolate with the corresponding receive port.
Returns
If the message was posted to the send port.

Definition at line 3067 of file embedder.cc.

3070 {
3071 if (engine == nullptr) {
3072 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3073 }
3074
3075 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)->IsValid()) {
3076 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine not running.");
3077 }
3078
3079 if (port == ILLEGAL_PORT) {
3081 "Attempted to post to an illegal port.");
3082 }
3083
3084 if (object == nullptr) {
3086 "Invalid Dart object to post.");
3087 }
3088
3089 Dart_CObject dart_object = {};
3090 fml::ScopedCleanupClosure typed_data_finalizer;
3091
3092 switch (object->type) {
3094 dart_object.type = Dart_CObject_kNull;
3095 break;
3097 dart_object.type = Dart_CObject_kBool;
3098 dart_object.value.as_bool = object->bool_value;
3099 break;
3101 dart_object.type = Dart_CObject_kInt32;
3102 dart_object.value.as_int32 = object->int32_value;
3103 break;
3105 dart_object.type = Dart_CObject_kInt64;
3106 dart_object.value.as_int64 = object->int64_value;
3107 break;
3109 dart_object.type = Dart_CObject_kDouble;
3110 dart_object.value.as_double = object->double_value;
3111 break;
3113 if (object->string_value == nullptr) {
3115 "kFlutterEngineDartObjectTypeString must be "
3116 "a null terminated string but was null.");
3117 }
3118 dart_object.type = Dart_CObject_kString;
3119 dart_object.value.as_string = const_cast<char*>(object->string_value);
3120 break;
3122 auto* buffer = SAFE_ACCESS(object->buffer_value, buffer, nullptr);
3123 if (buffer == nullptr) {
3125 "kFlutterEngineDartObjectTypeBuffer must "
3126 "specify a buffer but found nullptr.");
3127 }
3128 auto buffer_size = SAFE_ACCESS(object->buffer_value, buffer_size, 0);
3129 auto callback =
3130 SAFE_ACCESS(object->buffer_value, buffer_collect_callback, nullptr);
3131 auto user_data = SAFE_ACCESS(object->buffer_value, user_data, nullptr);
3132
3133 // The user has provided a callback, let them manage the lifecycle of
3134 // the underlying data. If not, copy it out from the provided buffer.
3135
3136 if (callback == nullptr) {
3137 dart_object.type = Dart_CObject_kTypedData;
3139 dart_object.value.as_typed_data.length = buffer_size;
3140 dart_object.value.as_typed_data.values = buffer;
3141 } else {
3142 struct ExternalTypedDataPeer {
3143 void* user_data = nullptr;
3144 VoidCallback trampoline = nullptr;
3145 };
3146 auto peer = new ExternalTypedDataPeer();
3147 peer->user_data = user_data;
3148 peer->trampoline = callback;
3149 // This finalizer is set so that in case of failure of the
3150 // Dart_PostCObject below, we collect the peer. The embedder is still
3151 // responsible for collecting the buffer in case of non-kSuccess
3152 // returns from this method. This finalizer must be released in case
3153 // of kSuccess returns from this method.
3154 typed_data_finalizer.SetClosure([peer]() {
3155 // This is the tiny object we use as the peer to the Dart call so
3156 // that we can attach the a trampoline to the embedder supplied
3157 // callback. In case of error, we need to collect this object lest
3158 // we introduce a tiny leak.
3159 delete peer;
3160 });
3165 dart_object.value.as_external_typed_data.peer = peer;
3167 +[](void* unused_isolate_callback_data, void* peer) {
3168 auto typed_peer = reinterpret_cast<ExternalTypedDataPeer*>(peer);
3169 typed_peer->trampoline(typed_peer->user_data);
3170 delete typed_peer;
3171 };
3172 }
3173 } break;
3174 default:
3175 return LOG_EMBEDDER_ERROR(
3177 "Invalid FlutterEngineDartObjectType type specified.");
3178 }
3179
3180 if (!Dart_PostCObject(port, &dart_object)) {
3182 "Could not post the object to the Dart VM.");
3183 }
3184
3185 // On a successful call, the VM takes ownership of and is responsible for
3186 // invoking the finalizer.
3187 typed_data_finalizer.Release();
3188 return kSuccess;
3189}
static uint32_t buffer_size(uint32_t offset, uint32_t maxAlignment)
Wraps a closure that is invoked in the destructor unless released by the caller.
Definition: closure.h:32
fml::closure SetClosure(const fml::closure &closure)
Definition: closure.h:50
fml::closure Release()
Definition: closure.h:56
#define ILLEGAL_PORT
Definition: dart_api.h:1535
@ Dart_TypedData_kUint8
Definition: dart_api.h:2615
@ Dart_CObject_kInt64
@ Dart_CObject_kDouble
@ Dart_CObject_kTypedData
@ Dart_CObject_kString
@ Dart_CObject_kNull
@ Dart_CObject_kExternalTypedData
@ Dart_CObject_kInt32
@ Dart_CObject_kBool
DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject *message)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified vm service port
Definition: switches.h:87
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified vm service A custom Dart VM Service port The default is to pick a randomly available open port disable vm Disable the Dart VM Service The Dart VM Service is never available in release mode disable vm service Disable mDNS Dart VM Service publication Bind to the IPv6 localhost address for the Dart VM Service Ignored if vm service host is set endless trace buffer
Definition: switches.h:126
FlutterEngineDartObjectType type
Definition: embedder.h:2069
const char * string_value
Definition: embedder.h:2078
const FlutterEngineDartBuffer * buffer_value
Definition: embedder.h:2079
Dart_HandleFinalizer callback
union _Dart_CObject::@86 value
Dart_CObject_Type type
uint8_t * data
struct _Dart_CObject::@86::@90 as_typed_data
const char * as_string
struct _Dart_CObject::@86::@91 as_external_typed_data
struct _Dart_CObject ** values

◆ FlutterEnginePostRenderThreadTask()

FLUTTER_EXPORT FlutterEngineResult FlutterEnginePostRenderThreadTask ( FLUTTER_API_SYMBOL(FlutterEngine engine,
VoidCallback  callback,
void *  callback_data 
)

Posts a task onto the Flutter render thread. Typically, this may be called from any thread as long as a FlutterEngineShutdown on the specific engine has not already been initiated.

Parameters
[in]engineA running engine instance.
[in]callbackThe callback to execute on the render thread.
callback_dataThe callback context.
Returns
The result of the call.

Definition at line 2933 of file embedder.cc.

2936 {
2937 if (engine == nullptr) {
2938 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2939 }
2940
2941 if (callback == nullptr) {
2943 "Render thread callback was null.");
2944 }
2945
2946 auto task = [callback, baton]() { callback(baton); };
2947
2948 return reinterpret_cast<flutter::EmbedderEngine*>(engine)
2949 ->PostRenderThreadTask(task)
2950 ? kSuccess
2952 "Could not post the render thread task.");
2953}

◆ FlutterEngineRegisterExternalTexture()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineRegisterExternalTexture ( FLUTTER_API_SYMBOL(FlutterEngine engine,
int64_t  texture_identifier 
)

Register an external texture with a unique (per engine) identifier. Only rendering backends that support external textures accept external texture registrations. After the external texture is registered, the application can mark that a frame is available by calling FlutterEngineMarkExternalTextureFrameAvailable.

See also
FlutterEngineUnregisterExternalTexture()
FlutterEngineMarkExternalTextureFrameAvailable()
Parameters
[in]engineA running engine instance.
[in]texture_identifierThe identifier of the texture to register with the engine. The embedder may supply new frames to this texture using the same identifier.
Returns
The result of the call.

Definition at line 2769 of file embedder.cc.

2771 {
2772 if (engine == nullptr) {
2773 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2774 }
2775
2776 if (texture_identifier == 0) {
2778 "Texture identifier was invalid.");
2779 }
2780 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)->RegisterTexture(
2781 texture_identifier)) {
2783 "Could not register the specified texture.");
2784 }
2785 return kSuccess;
2786}
static void RegisterTexture(JNIEnv *env, jobject jcaller, jlong shell_holder, jlong texture_id, jobject surface_texture)

◆ FlutterEngineReloadSystemFonts()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineReloadSystemFonts ( FLUTTER_API_SYMBOL(FlutterEngine engine)

Reloads the system fonts in engine.

Parameters
[in]engine.A running engine instance.
Returns
The result of the call.

Definition at line 2902 of file embedder.cc.

2903 {
2904 if (engine == nullptr) {
2905 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2906 }
2907
2908 TRACE_EVENT0("flutter", "FlutterEngineReloadSystemFonts");
2909
2910 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)
2911 ->ReloadSystemFonts()) {
2913 "Could not reload system fonts.");
2914 }
2915
2916 return kSuccess;
2917}

◆ FlutterEngineRemoveView()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineRemoveView ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterRemoveViewInfo info 
)

Removes a view.

        This is an asynchronous operation. The view's resources must not
        be cleaned up until |info.remove_view_callback| is invoked with
        a |removed| value of true.

        The callback is invoked on a thread managed by the engine. The
        embedder should re-thread if needed.

        Attempting to remove the implicit view will fail and will return
        kInvalidArguments. Attempting to remove a view with a
        non-existent view ID will fail, and |info.remove_view_callback|
        will be invoked with a |removed| value of false.
Parameters
[in]engineA running engine instance.
[in]infoThe remove view arguments. This can be deallocated once |FlutterEngineRemoveView| returns, before |remove_view_callback| is invoked.
Returns
The result of starting the asynchronous operation. If kSuccess, the |remove_view_callback| will be invoked.

Definition at line 2254 of file embedder.cc.

2256 {
2257 if (!engine) {
2258 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2259 }
2260 if (!info || !info->remove_view_callback) {
2262 "Remove view info handle was invalid.");
2263 }
2264
2265 if (info->view_id == kFlutterImplicitViewId) {
2266 return LOG_EMBEDDER_ERROR(
2268 "Remove view info was invalid. The implicit view cannot be removed.");
2269 }
2270
2271 // TODO(loicsharma): Return an error if the engine was initialized with
2272 // callbacks that are incompatible with multiple views.
2273 // https://github.com/flutter/flutter/issues/144806
2274
2275 // The engine must be running to remove a view.
2276 auto embedder_engine = reinterpret_cast<flutter::EmbedderEngine*>(engine);
2277 if (!embedder_engine->IsValid()) {
2278 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2279 }
2280
2282 [c_callback = info->remove_view_callback,
2283 user_data = info->user_data](bool removed) {
2285 result.struct_size = sizeof(FlutterRemoveViewResult);
2286 result.removed = removed;
2287 result.user_data = user_data;
2288 c_callback(&result);
2289 };
2290
2291 embedder_engine->GetShell().GetPlatformView()->RemoveView(info->view_id,
2292 callback);
2293 return kSuccess;
2294}
std::function< void(bool removed)> RemoveViewCallback
Definition: platform_view.h:54

◆ FlutterEngineRun()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineRun ( size_t  version,
const FlutterRendererConfig config,
const FlutterProjectArgs args,
void *  user_data,
FLUTTER_API_SYMBOL(FlutterEngine) *  engine_out 
)

Initialize and run a Flutter engine instance and return a handle to it. This is a convenience method for the pair of calls to FlutterEngineInitialize and FlutterEngineRunInitialized.

Note
This method of running a Flutter engine works well except in cases where the embedder specifies custom task runners via FlutterProjectArgs::custom_task_runners. In such cases, the engine may need the embedder to post tasks back to it before FlutterEngineRun has returned. Embedders can only post tasks to the engine if they have a handle to the engine. In such cases, embedders are advised to get the engine handle via the FlutterInitializeCall. Then they can call FlutterEngineRunInitialized knowing that they will be able to service custom tasks on other threads with the engine handle.
Parameters
[in]versionThe Flutter embedder API version. Must be FLUTTER_ENGINE_VERSION.
[in]configThe renderer configuration.
[in]argsThe Flutter project arguments.
user_dataA user data baton passed back to embedders in callbacks.
[out]engine_outThe engine handle on successful engine creation.
Returns
The result of the call to run the Flutter engine.

Definition at line 1715 of file embedder.cc.

1720 {
1721 auto result =
1722 FlutterEngineInitialize(version, config, args, user_data, engine_out);
1723
1724 if (result != kSuccess) {
1725 return result;
1726 }
1727
1728 return FlutterEngineRunInitialized(*engine_out);
1729}

◆ FlutterEngineRunInitialized()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineRunInitialized ( FLUTTER_API_SYMBOL(FlutterEngine engine)

Runs an initialized engine instance. An engine can be initialized via FlutterEngineInitialize. An initialized instance can only be run once. During and after this call, custom task runners supplied by the embedder are expected to start servicing tasks.

Parameters
[in]engineAn initialized engine instance that has not previously been run.
Returns
The result of the call to run the initialized Flutter engine instance.

Definition at line 2154 of file embedder.cc.

2155 {
2156 if (!engine) {
2157 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2158 }
2159
2160 auto embedder_engine = reinterpret_cast<flutter::EmbedderEngine*>(engine);
2161
2162 // The engine must not already be running. Initialize may only be called
2163 // once on an engine instance.
2164 if (embedder_engine->IsValid()) {
2165 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2166 }
2167
2168 // Step 1: Launch the shell.
2169 if (!embedder_engine->LaunchShell()) {
2171 "Could not launch the engine using supplied "
2172 "initialization arguments.");
2173 }
2174
2175 // Step 2: Tell the platform view to initialize itself.
2176 if (!embedder_engine->NotifyCreated()) {
2178 "Could not create platform view components.");
2179 }
2180
2181 // Step 3: Launch the root isolate.
2182 if (!embedder_engine->RunRootIsolate()) {
2183 return LOG_EMBEDDER_ERROR(
2185 "Could not run the root isolate of the Flutter application using the "
2186 "project arguments specified.");
2187 }
2188
2189 return kSuccess;
2190}

◆ FlutterEngineRunsAOTCompiledDartCode()

FLUTTER_EXPORT bool FlutterEngineRunsAOTCompiledDartCode ( void  )

Returns if the Flutter engine instance will run AOT compiled Dart code. This call has no threading restrictions.

For embedder code that is configured for both AOT and JIT mode Dart execution based on the Flutter engine being linked to, this runtime check may be used to appropriately configure the FlutterProjectArgs. In JIT mode execution, the kernel snapshots must be present in the Flutter assets directory specified in the FlutterProjectArgs. For AOT execution, the fields vm_snapshot_data, vm_snapshot_instructions, isolate_snapshot_data and isolate_snapshot_instructions (along with their size fields) must be specified in FlutterProjectArgs.

Returns
True, if AOT Dart code is run. JIT otherwise.

Definition at line 3063 of file embedder.cc.

3063 {
3065}

◆ FlutterEngineRunTask()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineRunTask ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterTask task 
)

Inform the engine to run the specified task. This task has been given to the engine via the FlutterTaskRunnerDescription.post_task_callback. This call must only be made at the target time specified in that callback. Running the task before that time is undefined behavior.

Parameters
[in]engineA running engine instance.
[in]taskthe task handle.
Returns
The result of the call.

Definition at line 2959 of file embedder.cc.

2961 {
2962 if (engine == nullptr) {
2963 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2964 }
2965
2966 return reinterpret_cast<flutter::EmbedderEngine*>(engine)->RunTask(task)
2967 ? kSuccess
2969 "Could not run the specified task.");
2970}

◆ FlutterEngineScheduleFrame()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineScheduleFrame ( FLUTTER_API_SYMBOL(FlutterEngine engine)

Schedule a new frame to redraw the content.

Parameters
[in]engineA running engine instance.
Returns
the result of the call made to the engine.

Definition at line 3293 of file embedder.cc.

3294 {
3295 if (engine == nullptr) {
3296 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3297 }
3298
3299 return reinterpret_cast<flutter::EmbedderEngine*>(engine)->ScheduleFrame()
3300 ? kSuccess
3302 "Could not schedule frame.");
3303}

◆ FlutterEngineSendKeyEvent()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendKeyEvent ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterKeyEvent event,
FlutterKeyEventCallback  callback,
void *  user_data 
)

Sends a key event to the engine. The framework will decide whether to handle this event in a synchronous fashion, although due to technical limitation, the result is always reported asynchronously. The callback is guaranteed to be called exactly once.

Parameters
[in]engineA running engine instance.
[in]eventThe event data to be sent. This function will no longer access event after returning.
[in]callbackThe callback invoked by the engine when the Flutter application has decided whether it handles this event. Accepts nullptr.
[in]user_dataThe context associated with the callback. The exact same value will used to invoke callback. Accepts nullptr.
Returns
The result of the call.

Definition at line 2581 of file embedder.cc.

2585 {
2586 if (engine == nullptr) {
2587 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2588 }
2589
2590 if (event == nullptr) {
2591 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid key event.");
2592 }
2593
2594 const char* character = SAFE_ACCESS(event, character, nullptr);
2595
2596 flutter::KeyData key_data;
2597 key_data.Clear();
2598 key_data.timestamp = static_cast<uint64_t>(SAFE_ACCESS(event, timestamp, 0));
2599 key_data.type = MapKeyEventType(
2601 key_data.physical = SAFE_ACCESS(event, physical, 0);
2602 key_data.logical = SAFE_ACCESS(event, logical, 0);
2603 key_data.synthesized = SAFE_ACCESS(event, synthesized, false);
2605 event, device_type,
2607
2608 auto packet = std::make_unique<flutter::KeyDataPacket>(key_data, character);
2609
2610 struct MessageData {
2612 void* user_data;
2613 };
2614
2615 MessageData* message_data =
2616 new MessageData{.callback = callback, .user_data = user_data};
2617
2619 engine, kFlutterKeyDataChannel, packet->data().data(),
2620 packet->data().size(),
2621 [](const uint8_t* data, size_t size, void* user_data) {
2622 auto message_data = std::unique_ptr<MessageData>(
2623 reinterpret_cast<MessageData*>(user_data));
2624 if (message_data->callback == nullptr) {
2625 return;
2626 }
2627 bool handled = false;
2628 if (size == 1) {
2629 handled = *data != 0;
2630 }
2631 message_data->callback(handled, message_data->user_data);
2632 },
2633 message_data);
2634}
static FlutterEngineResult InternalSendPlatformMessage(FLUTTER_API_SYMBOL(FlutterEngine) engine, const char *channel, const uint8_t *data, size_t size, FlutterDataCallback data_callback, void *user_data)
Definition: embedder.cc:2545
static flutter::KeyEventDeviceType MapKeyEventDeviceType(FlutterKeyEventDeviceType event_kind)
Definition: embedder.cc:2525
static flutter::KeyEventType MapKeyEventType(FlutterKeyEventType event_kind)
Definition: embedder.cc:2512
const char * kFlutterKeyDataChannel
Definition: embedder.cc:130
void(* FlutterKeyEventCallback)(bool, void *)
Definition: embedder.h:1155
if(end==-1)
FlKeyEvent * event
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259
uint64_t synthesized
Definition: key_data.h:70
KeyEventDeviceType device_type
Definition: key_data.h:71
uint64_t logical
Definition: key_data.h:66
uint64_t physical
Definition: key_data.h:65
KeyEventType type
Definition: key_data.h:64
uint64_t timestamp
Definition: key_data.h:63

◆ FlutterEngineSendPlatformMessage()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPlatformMessage ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterPlatformMessage message 
)

Definition at line 2636 of file embedder.cc.

2638 {
2639 if (engine == nullptr) {
2640 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2641 }
2642
2643 if (flutter_message == nullptr) {
2644 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid message argument.");
2645 }
2646
2647 if (SAFE_ACCESS(flutter_message, channel, nullptr) == nullptr) {
2648 return LOG_EMBEDDER_ERROR(
2649 kInvalidArguments, "Message argument did not specify a valid channel.");
2650 }
2651
2652 size_t message_size = SAFE_ACCESS(flutter_message, message_size, 0);
2653 const uint8_t* message_data = SAFE_ACCESS(flutter_message, message, nullptr);
2654
2655 if (message_size != 0 && message_data == nullptr) {
2656 return LOG_EMBEDDER_ERROR(
2658 "Message size was non-zero but the message data was nullptr.");
2659 }
2660
2661 const FlutterPlatformMessageResponseHandle* response_handle =
2662 SAFE_ACCESS(flutter_message, response_handle, nullptr);
2663
2665 if (response_handle && response_handle->message) {
2666 response = response_handle->message->response();
2667 }
2668
2669 std::unique_ptr<flutter::PlatformMessage> message;
2670 if (message_size == 0) {
2671 message = std::make_unique<flutter::PlatformMessage>(
2672 flutter_message->channel, response);
2673 } else {
2674 message = std::make_unique<flutter::PlatformMessage>(
2675 flutter_message->channel,
2676 fml::MallocMapping::Copy(message_data, message_size), response);
2677 }
2678
2679 return reinterpret_cast<flutter::EmbedderEngine*>(engine)
2680 ->SendPlatformMessage(std::move(message))
2681 ? kSuccess
2683 "Could not send a message to the running "
2684 "Flutter application.");
2685}
std::unique_ptr< flutter::PlatformMessage > message
Definition: embedder.cc:1405

◆ FlutterEngineSendPlatformMessageResponse()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPlatformMessageResponse ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterPlatformMessageResponseHandle handle,
const uint8_t *  data,
size_t  data_length 
)

Send a response from the native side to a platform message from the Dart Flutter application.

Parameters
[in]engineThe running engine instance.
[in]handleThe platform message response handle.
[in]dataThe data to associate with the platform message response.
[in]data_lengthThe length of the platform message response data.
Returns
The result of the call.

Definition at line 2737 of file embedder.cc.

2741 {
2742 if (data_length != 0 && data == nullptr) {
2743 return LOG_EMBEDDER_ERROR(
2745 "Data size was non zero but the pointer to the data was null.");
2746 }
2747
2748 auto response = handle->message->response();
2749
2750 if (response) {
2751 if (data_length == 0) {
2752 response->CompleteEmpty();
2753 } else {
2754 response->Complete(std::make_unique<fml::DataMapping>(
2755 std::vector<uint8_t>({data, data + data_length})));
2756 }
2757 }
2758
2759 delete handle;
2760
2761 return kSuccess;
2762}

◆ FlutterEngineSendPointerEvent()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendPointerEvent ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterPointerEvent events,
size_t  events_count 
)

Definition at line 2429 of file embedder.cc.

2432 {
2433 if (engine == nullptr) {
2434 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2435 }
2436
2437 if (pointers == nullptr || events_count == 0) {
2438 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid pointer events.");
2439 }
2440
2441 auto packet = std::make_unique<flutter::PointerDataPacket>(events_count);
2442
2443 const FlutterPointerEvent* current = pointers;
2444
2445 for (size_t i = 0; i < events_count; ++i) {
2446 flutter::PointerData pointer_data;
2447 pointer_data.Clear();
2448 // this is currely in use only on android embedding.
2449 pointer_data.embedder_id = 0;
2450 pointer_data.time_stamp = SAFE_ACCESS(current, timestamp, 0);
2451 pointer_data.change = ToPointerDataChange(
2452 SAFE_ACCESS(current, phase, FlutterPointerPhase::kCancel));
2453 pointer_data.physical_x = SAFE_ACCESS(current, x, 0.0);
2454 pointer_data.physical_y = SAFE_ACCESS(current, y, 0.0);
2455 // Delta will be generated in pointer_data_packet_converter.cc.
2456 pointer_data.physical_delta_x = 0.0;
2457 pointer_data.physical_delta_y = 0.0;
2458 pointer_data.device = SAFE_ACCESS(current, device, 0);
2459 // Pointer identifier will be generated in
2460 // pointer_data_packet_converter.cc.
2461 pointer_data.pointer_identifier = 0;
2462 pointer_data.signal_kind = ToPointerDataSignalKind(
2463 SAFE_ACCESS(current, signal_kind, kFlutterPointerSignalKindNone));
2464 pointer_data.scroll_delta_x = SAFE_ACCESS(current, scroll_delta_x, 0.0);
2465 pointer_data.scroll_delta_y = SAFE_ACCESS(current, scroll_delta_y, 0.0);
2466 FlutterPointerDeviceKind device_kind =
2467 SAFE_ACCESS(current, device_kind, kFlutterPointerDeviceKindMouse);
2468 // For backwards compatibility with embedders written before the device
2469 // kind and buttons were exposed, if the device kind is not set treat it
2470 // as a mouse, with a synthesized primary button state based on the phase.
2471 if (device_kind == 0) {
2473 pointer_data.buttons =
2475
2476 } else {
2477 pointer_data.kind = ToPointerDataKind(device_kind);
2478 if (pointer_data.kind == flutter::PointerData::DeviceKind::kTouch) {
2479 // For touch events, set the button internally rather than requiring
2480 // it at the API level, since it's a confusing construction to expose.
2481 if (pointer_data.change == flutter::PointerData::Change::kDown ||
2484 }
2485 } else {
2486 // Buttons use the same mask values, so pass them through directly.
2487 pointer_data.buttons = SAFE_ACCESS(current, buttons, 0);
2488 }
2489 }
2490 pointer_data.pan_x = SAFE_ACCESS(current, pan_x, 0.0);
2491 pointer_data.pan_y = SAFE_ACCESS(current, pan_y, 0.0);
2492 // Delta will be generated in pointer_data_packet_converter.cc.
2493 pointer_data.pan_delta_x = 0.0;
2494 pointer_data.pan_delta_y = 0.0;
2495 pointer_data.scale = SAFE_ACCESS(current, scale, 0.0);
2496 pointer_data.rotation = SAFE_ACCESS(current, rotation, 0.0);
2497 pointer_data.view_id =
2498 SAFE_ACCESS(current, view_id, kFlutterImplicitViewId);
2499 packet->SetPointerData(i, pointer_data);
2500 current = reinterpret_cast<const FlutterPointerEvent*>(
2501 reinterpret_cast<const uint8_t*>(current) + current->struct_size);
2502 }
2503
2504 return reinterpret_cast<flutter::EmbedderEngine*>(engine)
2505 ->DispatchPointerDataPacket(std::move(packet))
2506 ? kSuccess
2508 "Could not dispatch pointer events to the "
2509 "running Flutter application.");
2510}
flutter::PointerData::SignalKind ToPointerDataSignalKind(FlutterPointerSignalKind kind)
Definition: embedder.cc:2391
flutter::PointerData::DeviceKind ToPointerDataKind(FlutterPointerDeviceKind device_kind)
Definition: embedder.cc:2374
flutter::PointerData::Change ToPointerDataChange(FlutterPointerPhase phase)
Definition: embedder.cc:2345
int64_t PointerDataButtonsForLegacyEvent(flutter::PointerData::Change change)
Definition: embedder.cc:2408
VkDevice device
Definition: main.cc:53
double y
double x
static void DispatchPointerDataPacket(JNIEnv *env, jobject jcaller, jlong shell_holder, jobject buffer, jint position)
@ kPointerButtonTouchContact
Definition: pointer_data.h:22
const Scalar scale
size_t struct_size
The size of this struct. Must be sizeof(FlutterPointerEvent).
Definition: embedder.h:1036
SignalKind signal_kind
Definition: pointer_data.h:74
int64_t pointer_identifier
Definition: pointer_data.h:76

◆ FlutterEngineSendWindowMetricsEvent()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSendWindowMetricsEvent ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterWindowMetricsEvent event 
)

Definition at line 2320 of file embedder.cc.

2322 {
2323 if (engine == nullptr || flutter_metrics == nullptr) {
2324 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2325 }
2326 FlutterViewId view_id =
2327 SAFE_ACCESS(flutter_metrics, view_id, kFlutterImplicitViewId);
2328
2329 std::variant<flutter::ViewportMetrics, std::string> metrics_or_error =
2330 MakeViewportMetricsFromWindowMetrics(flutter_metrics);
2331 if (const std::string* error = std::get_if<std::string>(&metrics_or_error)) {
2332 return LOG_EMBEDDER_ERROR(kInvalidArguments, error->c_str());
2333 }
2334
2335 auto metrics = std::get<flutter::ViewportMetrics>(metrics_or_error);
2336
2337 return reinterpret_cast<flutter::EmbedderEngine*>(engine)->SetViewportMetrics(
2338 view_id, metrics)
2339 ? kSuccess
2341 "Viewport metrics were invalid.");
2342}
static void SetViewportMetrics(JNIEnv *env, jobject jcaller, jlong shell_holder, jfloat devicePixelRatio, jint physicalWidth, jint physicalHeight, jint physicalPaddingTop, jint physicalPaddingRight, jint physicalPaddingBottom, jint physicalPaddingLeft, jint physicalViewInsetTop, jint physicalViewInsetRight, jint physicalViewInsetBottom, jint physicalViewInsetLeft, jint systemGestureInsetTop, jint systemGestureInsetRight, jint systemGestureInsetBottom, jint systemGestureInsetLeft, jint physicalTouchSlop, jintArray javaDisplayFeaturesBounds, jintArray javaDisplayFeaturesType, jintArray javaDisplayFeaturesState)

◆ FlutterEngineSetNextFrameCallback()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineSetNextFrameCallback ( FLUTTER_API_SYMBOL(FlutterEngine engine,
VoidCallback  callback,
void *  user_data 
)

Schedule a callback to be called after the next frame is drawn. This must be called from the platform thread. The callback is executed only once from the raster thread; embedders must re-thread if necessary. Performing blocking calls in this callback may introduce application jank.

Parameters
[in]engineA running engine instance.
[in]callbackThe callback to execute.
[in]user_dataA baton passed by the engine to the callback. This baton is not interpreted by the engine in any way.
Returns
The result of the call.

Definition at line 3305 of file embedder.cc.

3308 {
3309 if (engine == nullptr) {
3310 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3311 }
3312
3313 if (callback == nullptr) {
3315 "Next frame callback was null.");
3316 }
3317
3318 flutter::EmbedderEngine* embedder_engine =
3319 reinterpret_cast<flutter::EmbedderEngine*>(engine);
3320
3321 fml::WeakPtr<flutter::PlatformView> weak_platform_view =
3322 embedder_engine->GetShell().GetPlatformView();
3323
3324 if (!weak_platform_view) {
3326 "Platform view unavailable.");
3327 }
3328
3329 weak_platform_view->SetNextFrameCallback(
3331
3332 return kSuccess;
3333}
void SetNextFrameCallback(const fml::closure &closure)
Sets a callback that gets executed when the rasterizer renders the next frame. Due to the asynchronou...
fml::WeakPtr< PlatformView > GetPlatformView()
Platform views may only be accessed on the platform task runner.
Definition: shell.cc:824

◆ FlutterEngineShutdown()

Shuts down a Flutter engine instance. The engine handle is no longer valid for any calls in the embedder API after this point. Making additional calls with this handle is undefined behavior.

Note
This de-initializes the Flutter engine instance (via an implicit call to FlutterEngineDeinitialize) if necessary.
Parameters
[in]engineThe Flutter engine instance to collect.
Returns
The result of the call to shutdown the Flutter engine instance.

Definition at line 2309 of file embedder.cc.

2310 {
2312 if (result != kSuccess) {
2313 return result;
2314 }
2315 auto embedder_engine = reinterpret_cast<flutter::EmbedderEngine*>(engine);
2316 delete embedder_engine;
2317 return kSuccess;
2318}

◆ FlutterEngineTraceEventDurationBegin()

FLUTTER_EXPORT void FlutterEngineTraceEventDurationBegin ( const char *  name)

A profiling utility. Logs a trace duration begin event to the timeline. If the timeline is unavailable or disabled, this has no effect. Must be balanced with an duration end event (via FlutterEngineTraceEventDurationEnd) with the same name on the same thread. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in.

Parameters
[in]nameThe name of the trace event.

Definition at line 2919 of file embedder.cc.

2919 {
2920 fml::tracing::TraceEvent0("flutter", name, /*flow_id_count=*/0,
2921 /*flow_ids=*/nullptr);
2922}
void TraceEvent0(TraceArg category_group, TraceArg name, size_t flow_id_count, const uint64_t *flow_ids)
Definition: trace_event.cc:408

◆ FlutterEngineTraceEventDurationEnd()

FLUTTER_EXPORT void FlutterEngineTraceEventDurationEnd ( const char *  name)

A profiling utility. Logs a trace duration end event to the timeline. If the timeline is unavailable or disabled, this has no effect. This call must be preceded by a trace duration begin call (via FlutterEngineTraceEventDurationBegin) with the same name on the same thread. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in.

Parameters
[in]nameThe name of the trace event.

Definition at line 2924 of file embedder.cc.

2924 {
2926}
void TraceEventEnd(TraceArg name)
Definition: trace_event.cc:429

◆ FlutterEngineTraceEventInstant()

FLUTTER_EXPORT void FlutterEngineTraceEventInstant ( const char *  name)

A profiling utility. Logs a trace duration instant event to the timeline. If the timeline is unavailable or disabled, this has no effect. Can be called on any thread. Strings passed into the function will NOT be copied when added to the timeline. Only string literals may be passed in.

Parameters
[in]nameThe name of the trace event.

Definition at line 2928 of file embedder.cc.

2928 {
2929 fml::tracing::TraceEventInstant0("flutter", name, /*flow_id_count=*/0,
2930 /*flow_ids=*/nullptr);
2931}
void TraceEventInstant0(TraceArg category_group, TraceArg name, size_t flow_id_count, const uint64_t *flow_ids)
Definition: trace_event.cc:460

◆ FlutterEngineUnregisterExternalTexture()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineUnregisterExternalTexture ( FLUTTER_API_SYMBOL(FlutterEngine engine,
int64_t  texture_identifier 
)

Unregister a previous texture registration.

See also
FlutterEngineRegisterExternalTexture()
FlutterEngineMarkExternalTextureFrameAvailable()
Parameters
[in]engineA running engine instance.
[in]texture_identifierThe identifier of the texture for which new frame will not be available.
Returns
The result of the call.

Definition at line 2788 of file embedder.cc.

2790 {
2791 if (engine == nullptr) {
2792 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2793 }
2794
2795 if (texture_identifier == 0) {
2797 "Texture identifier was invalid.");
2798 }
2799
2800 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)->UnregisterTexture(
2801 texture_identifier)) {
2803 "Could not un-register the specified texture.");
2804 }
2805
2806 return kSuccess;
2807}
static void UnregisterTexture(JNIEnv *env, jobject jcaller, jlong shell_holder, jlong texture_id)

◆ FlutterEngineUpdateAccessibilityFeatures()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateAccessibilityFeatures ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterAccessibilityFeature  features 
)

Sets additional accessibility features.

Parameters
[in]engineA running engine instance
[in]featuresThe accessibility features to set.
Returns
The result of the call.

Definition at line 2841 of file embedder.cc.

2843 {
2844 if (engine == nullptr) {
2845 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2846 }
2847 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)
2850 "Could not update accessibility features.");
2851 }
2852 return kSuccess;
2853}
FlutterSemanticsFlag flags
static void SetAccessibilityFeatures(JNIEnv *env, jobject jcaller, jlong shell_holder, jint flags)

◆ FlutterEngineUpdateLocales()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateLocales ( FLUTTER_API_SYMBOL(FlutterEngine engine,
const FlutterLocale **  locales,
size_t  locales_count 
)

Notify a running engine instance that the locale has been updated. The preferred locale must be the first item in the list of locales supplied. The other entries will be used as a fallback.

Parameters
[in]engineA running engine instance.
[in]localesThe updated locales in the order of preference.
[in]locales_countThe count of locales supplied.
Returns
Whether the locale updates were applied.

Definition at line 3004 of file embedder.cc.

3007 {
3008 if (engine == nullptr) {
3009 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
3010 }
3011
3012 if (locales_count == 0) {
3013 return kSuccess;
3014 }
3015
3016 if (locales == nullptr) {
3017 return LOG_EMBEDDER_ERROR(kInvalidArguments, "No locales were specified.");
3018 }
3019
3020 rapidjson::Document document;
3021 auto& allocator = document.GetAllocator();
3022
3023 document.SetObject();
3024 document.AddMember("method", "setLocale", allocator);
3025
3026 rapidjson::Value args(rapidjson::kArrayType);
3027 args.Reserve(locales_count * 4, allocator);
3028 for (size_t i = 0; i < locales_count; ++i) {
3029 const FlutterLocale* locale = locales[i];
3030 const char* language_code_str = SAFE_ACCESS(locale, language_code, nullptr);
3031 if (language_code_str == nullptr || ::strlen(language_code_str) == 0) {
3032 return LOG_EMBEDDER_ERROR(
3034 "Language code is required but not present in FlutterLocale.");
3035 }
3036
3037 const char* country_code_str = SAFE_ACCESS(locale, country_code, "");
3038 const char* script_code_str = SAFE_ACCESS(locale, script_code, "");
3039 const char* variant_code_str = SAFE_ACCESS(locale, variant_code, "");
3040
3041 rapidjson::Value language_code, country_code, script_code, variant_code;
3042
3043 language_code.SetString(language_code_str, allocator);
3044 country_code.SetString(country_code_str ? country_code_str : "", allocator);
3045 script_code.SetString(script_code_str ? script_code_str : "", allocator);
3046 variant_code.SetString(variant_code_str ? variant_code_str : "", allocator);
3047
3048 // Required.
3049 args.PushBack(language_code, allocator);
3050 args.PushBack(country_code, allocator);
3051 args.PushBack(script_code, allocator);
3052 args.PushBack(variant_code, allocator);
3053 }
3054 document.AddMember("args", args, allocator);
3055
3056 return DispatchJSONPlatformMessage(engine, document, "flutter/localization")
3057 ? kSuccess
3059 "Could not send message to update locale of "
3060 "a running Flutter application.");
3061}

◆ FlutterEngineUpdateSemanticsEnabled()

FLUTTER_EXPORT FlutterEngineResult FlutterEngineUpdateSemanticsEnabled ( FLUTTER_API_SYMBOL(FlutterEngine engine,
bool  enabled 
)

Enable or disable accessibility semantics.

Parameters
[in]engineA running engine instance.
[in]enabledWhen enabled, changes to the semantic contents of the window are sent via the FlutterUpdateSemanticsCallback2 registered to update_semantics_callback2 in FlutterProjectArgs.
Returns
The result of the call.

Definition at line 2827 of file embedder.cc.

2829 {
2830 if (engine == nullptr) {
2831 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2832 }
2833 if (!reinterpret_cast<flutter::EmbedderEngine*>(engine)->SetSemanticsEnabled(
2834 enabled)) {
2836 "Could not update semantics state.");
2837 }
2838 return kSuccess;
2839}
static void SetSemanticsEnabled(JNIEnv *env, jobject jcaller, jlong shell_holder, jboolean enabled)

◆ FlutterPlatformMessageCreateResponseHandle()

FLUTTER_EXPORT FlutterEngineResult FlutterPlatformMessageCreateResponseHandle ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterDataCallback  data_callback,
void *  user_data,
FlutterPlatformMessageResponseHandle **  response_out 
)

Creates a platform message response handle that allows the embedder to set a native callback for a response to a message. This handle may be set on the response_handle field of any FlutterPlatformMessage sent to the engine.

The handle must be collected via a call to FlutterPlatformMessageReleaseResponseHandle. This may be done immediately after a call to FlutterEngineSendPlatformMessage with a platform message whose response handle contains the handle created using this call. In case a handle is created but never sent in a message, the release call must still be made. Not calling release on the handle results in a small memory leak.

The user data baton passed to the data callback is the one specified in this call as the third argument.

See also
FlutterPlatformMessageReleaseResponseHandle()
Parameters
[in]engineA running engine instance.
[in]data_callbackThe callback invoked by the engine when the Flutter application send a response on the handle.
[in]user_dataThe user data associated with the data callback.
[out]response_outThe response handle created when this call is successful.
Returns
The result of the call.

Definition at line 2687 of file embedder.cc.

2691 {
2692 if (engine == nullptr) {
2693 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Engine handle was invalid.");
2694 }
2695
2696 if (data_callback == nullptr || response_out == nullptr) {
2697 return LOG_EMBEDDER_ERROR(
2698 kInvalidArguments, "Data callback or the response handle was invalid.");
2699 }
2700
2702 [user_data, data_callback](const uint8_t* data, size_t size) {
2703 data_callback(data, size, user_data);
2704 };
2705
2706 auto platform_task_runner = reinterpret_cast<flutter::EmbedderEngine*>(engine)
2707 ->GetTaskRunners()
2708 .GetPlatformTaskRunner();
2709
2710 auto handle = new FlutterPlatformMessageResponseHandle();
2711
2712 handle->message = std::make_unique<flutter::PlatformMessage>(
2713 "", // The channel is empty and unused as the response handle is going
2714 // to referenced directly in the |FlutterEngineSendPlatformMessage|
2715 // with the container message discarded.
2716 fml::MakeRefCounted<flutter::EmbedderPlatformMessageResponse>(
2717 std::move(platform_task_runner), response_callback));
2718 *response_out = handle;
2719 return kSuccess;
2720}
std::function< void(const uint8_t *data, size_t size)> Callback

◆ FlutterPlatformMessageReleaseResponseHandle()

FLUTTER_EXPORT FlutterEngineResult FlutterPlatformMessageReleaseResponseHandle ( FLUTTER_API_SYMBOL(FlutterEngine engine,
FlutterPlatformMessageResponseHandle response 
)

Collects the handle created using FlutterPlatformMessageCreateResponseHandle.

See also
FlutterPlatformMessageCreateResponseHandle()
Parameters
[in]engineA running engine instance.
[in]responseThe platform message response handle to collect. These handles are created using FlutterPlatformMessageCreateResponseHandle().
Returns
The result of the call.

Definition at line 2722 of file embedder.cc.

2724 {
2725 if (engine == nullptr) {
2726 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid engine handle.");
2727 }
2728
2729 if (response == nullptr) {
2730 return LOG_EMBEDDER_ERROR(kInvalidArguments, "Invalid response handle.");
2731 }
2732 delete response;
2733 return kSuccess;
2734}

Variable Documentation

◆ kFlutterSemanticsCustomActionIdBatchEnd

FLUTTER_EXPORT const int32_t kFlutterSemanticsCustomActionIdBatchEnd
extern

FlutterSemanticsCustomAction ID used as a sentinel to signal the end of a batch of semantics custom action updates. This is unused if using FlutterUpdateSemanticsCallback2.

Definition at line 106 of file embedder.cc.

◆ kFlutterSemanticsNodeIdBatchEnd

FLUTTER_EXPORT const int32_t kFlutterSemanticsNodeIdBatchEnd
extern

FlutterSemanticsNode ID used as a sentinel to signal the end of a batch of semantics node updates. This is unused if using FlutterUpdateSemanticsCallback2.

Definition at line 105 of file embedder.cc.