Flutter Engine
The Flutter Engine
|
Platform views are created by the shell on the platform task runner. Unless explicitly specified, all platform view methods are called on the platform task runner as well. Platform views are usually sub-classed on a per platform basis and the bulk of the window system integration happens using that subclass. Since most platform window toolkits are usually only safe to access on a single "main" thread, any interaction that requires access to the underlying platform's window toolkit is routed through the platform view associated with that shell. This involves operations like settings up and tearing down the render surface, platform messages, interacting with accessibility features on the platform, input events, etc. More...
#include <platform_view.h>
Classes | |
class | Delegate |
Used to forward events from the platform view to interested subsystems. This forwarding is done by the shell which sets itself up as the delegate of the platform view. More... | |
Public Types | |
using | AddViewCallback = std::function< void(bool added)> |
using | RemoveViewCallback = std::function< void(bool removed)> |
Public Member Functions | |
PlatformView (Delegate &delegate, const TaskRunners &task_runners) | |
Creates a platform view with the specified delegate and task runner. The base class by itself does not do much but is suitable for use in test environments where full platform integration may not be necessary. The platform view may only be created, accessed and destroyed on the platform task runner. More... | |
virtual | ~PlatformView () |
Destroys the platform view. The platform view is owned by the shell and will be destroyed by the same on the platform tasks runner. More... | |
virtual std::unique_ptr< VsyncWaiter > | CreateVSyncWaiter () |
Invoked by the shell to obtain a platform specific vsync waiter. It is optional for platforms to override this method and provide a custom vsync waiter because a timer based fall-back waiter is used by default. However, it is highly recommended that platform provide their own Vsync waiter as the timer based fall-back will not render frames aligned with vsync boundaries. More... | |
void | DispatchPlatformMessage (std::unique_ptr< PlatformMessage > message) |
Used by embedders to dispatch a platform message to a running root isolate hosted by the engine. If an isolate is not running, the message is dropped. If there is no one on the other side listening on the channel, the message is dropped. When a platform message is dropped, any response handles associated with that message will be dropped as well. All users of platform messages must assume that message may not be delivered and/or their response handles may not be invoked. Platform messages are not buffered. More... | |
virtual void | HandlePlatformMessage (std::unique_ptr< PlatformMessage > message) |
Overridden by embedders to perform actions in response to platform messages sent from the framework to the embedder. Default implementation of this method simply returns an empty response. More... | |
void | DispatchSemanticsAction (int32_t node_id, SemanticsAction action, fml::MallocMapping args) |
Used by embedders to dispatch an accessibility action to a running isolate hosted by the engine. More... | |
virtual void | SetSemanticsEnabled (bool enabled) |
Used by embedder to notify the running isolate hosted by the engine on the UI thread that the accessibility tree needs to be generated. More... | |
virtual void | SetAccessibilityFeatures (int32_t flags) |
Used by the embedder to specify the features to enable in the accessibility tree generated by the isolate. This information is forwarded to the root isolate hosted by the engine on the UI thread. More... | |
virtual void | UpdateSemantics (SemanticsNodeUpdates updates, CustomAccessibilityActionUpdates actions) |
Used by the framework to tell the embedder to apply the specified semantics node updates. The default implementation of this method does nothing. More... | |
virtual void | SendChannelUpdate (const std::string &name, bool listening) |
Used by the framework to tell the embedder that it has registered a listener on a given channel. More... | |
void | SetViewportMetrics (int64_t view_id, const ViewportMetrics &metrics) |
Used by embedders to specify the updated viewport metrics for a view. In response to this call, on the raster thread, the rasterizer may need to be reconfigured to the updated viewport dimensions. On the UI thread, the framework may need to start generating a new frame for the updated viewport metrics as well. More... | |
void | NotifyCreated () |
Used by embedders to notify the shell that a platform view has been created. This notification is used to create a rendering surface and pick the client rendering API to use to render into this surface. No frames will be scheduled or rendered before this call. The surface must remain valid till the corresponding call to NotifyDestroyed. More... | |
virtual void | NotifyDestroyed () |
Used by embedders to notify the shell that the platform view has been destroyed. This notification used to collect the rendering surface and all associated resources. Frame scheduling is also suspended. More... | |
void | ScheduleFrame () |
Used by embedders to schedule a frame. In response to this call, the framework may need to start generating a new frame. More... | |
void | AddView (int64_t view_id, const ViewportMetrics &viewport_metrics, AddViewCallback callback) |
Used by embedders to notify the shell of a new non-implicit view. More... | |
void | RemoveView (int64_t view_id, RemoveViewCallback callback) |
Used by embedders to notify the shell of a removed non-implicit view. More... | |
virtual sk_sp< GrDirectContext > | CreateResourceContext () const |
Used by the shell to obtain a Skia GPU context that is capable of operating on the IO thread. The context must be in the same share-group as the Skia GPU context used on the render thread. This context will always be used on the IO thread. Because it is in the same share-group as the separate render thread context, any GPU resources uploaded in this context will be visible to the render thread context (synchronization of GPU resources is managed by Skia). More... | |
virtual std::shared_ptr< impeller::Context > | GetImpellerContext () const |
virtual void | ReleaseResourceContext () const |
Used by the shell to notify the embedder that the resource context previously obtained via a call to CreateResourceContext() is being collected. The embedder is free to collect an platform specific resources associated with this context. More... | |
virtual PointerDataDispatcherMaker | GetDispatcherMaker () |
Returns a platform-specific PointerDataDispatcherMaker so the Engine can construct the PointerDataPacketDispatcher based on platforms. More... | |
fml::WeakPtr< PlatformView > | GetWeakPtr () const |
Returns a weak pointer to the platform view. Since the platform view may only be created, accessed and destroyed on the platform thread, any access to the platform view from a non-platform task runner needs a weak pointer to the platform view along with a reference to the platform task runner. A task must be posted to the platform task runner with the weak pointer captured in the same. The platform view method may only be called in the posted task once the weak pointer validity has been checked. This method is used by callers to obtain that weak pointer. More... | |
virtual void | OnPreEngineRestart () const |
Gives embedders a chance to react to a "cold restart" of the running isolate. The default implementation of this method does nothing. More... | |
void | SetNextFrameCallback (const fml::closure &closure) |
Sets a callback that gets executed when the rasterizer renders the next frame. Due to the asynchronous nature of rendering in Flutter, embedders usually add a placeholder over the contents in which Flutter is going to render when Flutter is first initialized. This callback may be used as a signal to remove that placeholder. The callback is executed on the render task runner and not the platform task runner. It is the embedder's responsibility to re-thread as necessary. More... | |
void | DispatchPointerDataPacket (std::unique_ptr< PointerDataPacket > packet) |
Dispatches pointer events from the embedder to the framework. Each pointer data packet may contain multiple pointer input events. Each call to this method wakes up the UI thread. More... | |
void | RegisterTexture (std::shared_ptr< flutter::Texture > texture) |
Used by the embedder to specify a texture that it wants the rasterizer to composite within the Flutter layer tree. All textures must have a unique identifier. When the rasterizer encounters an external texture within its hierarchy, it gives the embedder a chance to update that texture on the raster thread before it composites the same on-screen. More... | |
void | UnregisterTexture (int64_t texture_id) |
Used by the embedder to notify the rasterizer that it will no longer attempt to composite the specified texture within the layer tree. This allows the rasterizer to collect associated resources. More... | |
void | MarkTextureFrameAvailable (int64_t texture_id) |
Used by the embedder to notify the rasterizer that the context of the previously registered texture have been updated. Typically, Flutter will only render a frame if there is an updated layer tree. However, in cases where the layer tree is static but one of the externally composited textures has been updated by the embedder, the embedder needs to notify the rasterizer to render a new frame. In such cases, the existing layer tree may be reused with the frame re-composited with all updated external textures. Unlike the calls to register and unregister the texture, this call must be made each time a new texture frame is available. More... | |
virtual std::unique_ptr< std::vector< std::string > > | ComputePlatformResolvedLocales (const std::vector< std::string > &supported_locale_data) |
Directly invokes platform-specific APIs to compute the locale the platform would have natively resolved to. More... | |
virtual std::shared_ptr< ExternalViewEmbedder > | CreateExternalViewEmbedder () |
virtual void | RequestDartDeferredLibrary (intptr_t loading_unit_id) |
Invoked when the dart VM requests that a deferred library be loaded. Notifies the engine that the deferred library identified by the specified loading unit id should be downloaded and loaded into the Dart VM via LoadDartDeferredLibrary More... | |
virtual void | LoadDartDeferredLibrary (intptr_t loading_unit_id, std::unique_ptr< const fml::Mapping > snapshot_data, std::unique_ptr< const fml::Mapping > snapshot_instructions) |
Loads the Dart shared library into the Dart VM. When the Dart library is loaded successfully, the Dart future returned by the originating loadLibrary() call completes. More... | |
virtual void | LoadDartDeferredLibraryError (intptr_t loading_unit_id, const std::string error_message, bool transient) |
Indicates to the dart VM that the request to load a deferred library with the specified loading unit id has failed. More... | |
virtual void | UpdateAssetResolverByType (std::unique_ptr< AssetResolver > updated_asset_resolver, AssetResolver::AssetResolverType type) |
Replaces the asset resolver handled by the engine's AssetManager of the specified type with updated_asset_resolver . The matching AssetResolver is removed and replaced with updated_asset_resolvers . More... | |
virtual std::unique_ptr< SnapshotSurfaceProducer > | CreateSnapshotSurfaceProducer () |
Creates an object that produces surfaces suitable for raster snapshotting. The rasterizer will request this surface if no on screen surface is currently available when an application requests a snapshot, e.g. if Scene.toImage or Picture.toImage are called while the application is in the background. More... | |
virtual std::shared_ptr< PlatformMessageHandler > | GetPlatformMessageHandler () const |
Specifies a delegate that will receive PlatformMessages from Flutter to the host platform. More... | |
const Settings & | GetSettings () const |
Get the settings for this platform view instance. More... | |
virtual double | GetScaledFontSize (double unscaled_font_size, int configuration_id) const |
Synchronously invokes platform-specific APIs to apply the system text scaling on the given unscaled font size. More... | |
Protected Member Functions | |
virtual std::unique_ptr< Surface > | CreateRenderingSurface () |
Protected Attributes | |
PlatformView::Delegate & | delegate_ |
const TaskRunners | task_runners_ |
fml::WeakPtrFactory< PlatformView > | weak_factory_ |
Platform views are created by the shell on the platform task runner. Unless explicitly specified, all platform view methods are called on the platform task runner as well. Platform views are usually sub-classed on a per platform basis and the bulk of the window system integration happens using that subclass. Since most platform window toolkits are usually only safe to access on a single "main" thread, any interaction that requires access to the underlying platform's window toolkit is routed through the platform view associated with that shell. This involves operations like settings up and tearing down the render surface, platform messages, interacting with accessibility features on the platform, input events, etc.
Definition at line 51 of file platform_view.h.
using flutter::PlatformView::AddViewCallback = std::function<void(bool added)> |
Definition at line 53 of file platform_view.h.
using flutter::PlatformView::RemoveViewCallback = std::function<void(bool removed)> |
Definition at line 54 of file platform_view.h.
|
explicit |
Creates a platform view with the specified delegate and task runner. The base class by itself does not do much but is suitable for use in test environments where full platform integration may not be necessary. The platform view may only be created, accessed and destroyed on the platform task runner.
delegate | The delegate. This is typically the shell. | |
[in] | task_runners | The task runners used by this platform view. |
Definition at line 16 of file platform_view.cc.
|
virtualdefault |
Destroys the platform view. The platform view is owned by the shell and will be destroyed by the same on the platform tasks runner.
Reimplemented in flutter_runner::PlatformView.
void flutter::PlatformView::AddView | ( | int64_t | view_id, |
const ViewportMetrics & | viewport_metrics, | ||
AddViewCallback | callback | ||
) |
Used by embedders to notify the shell of a new non-implicit view.
This method notifies the shell to allocate resources and inform Dart about the view, and on success, schedules a new frame. Finally, it invokes |callback| with whether the operation is successful. This operation is asynchronous; avoid using the view until |callback| returns true. Callers should prepare resources for the view (if any) in advance but be ready to clean up on failure. The callback is called on a different thread. Do not use for implicit views, which are added internally during shell initialization. Adding |kFlutterImplicitViewId| or an existing view ID will fail, indicated by |callback| returning false.
[in] | view_id | The view ID of the new view. |
[in] | viewport_metrics | The initial viewport metrics for the view. |
[in] | callback | The callback that's invoked once the shell has attempted to add the view. |
Definition at line 89 of file platform_view.cc.
|
virtual |
Directly invokes platform-specific APIs to compute the locale the platform would have natively resolved to.
[in] | supported_locale_data | The vector of strings that represents the locales supported by the app. Each locale consists of three strings: languageCode, countryCode, and scriptCode in that order. |
Definition at line 174 of file platform_view.cc.
|
virtual |
Reimplemented in flutter_runner::PlatformView, and flutter::TesterPlatformView.
Definition at line 159 of file platform_view.cc.
|
protectedvirtual |
Reimplemented in flutter::TesterPlatformView.
Definition at line 150 of file platform_view.cc.
|
virtual |
Used by the shell to obtain a Skia GPU context that is capable of operating on the IO thread. The context must be in the same share-group as the Skia GPU context used on the render thread. This context will always be used on the IO thread. Because it is in the same share-group as the separate render thread context, any GPU resources uploaded in this context will be visible to the render thread context (synchronization of GPU resources is managed by Skia).
If such context cannot be created on the IO thread, callers may return nullptr
. This will mean that all texture uploads will be queued onto the render thread which will cause performance issues. When this context is nullptr
, an error is logged to the console. It is highly recommended that all platforms provide a resource context.
nullptr
in case such a context cannot be created. Definition at line 100 of file platform_view.cc.
|
virtual |
Creates an object that produces surfaces suitable for raster snapshotting. The rasterizer will request this surface if no on screen surface is currently available when an application requests a snapshot, e.g. if Scene.toImage
or Picture.toImage
are called while the application is in the background.
Not all backends support this kind of surface usage, and the default implementation returns nullptr. Platforms should override this if they can support GPU operations in the background and support GPU resource context usage.
Definition at line 201 of file platform_view.cc.
|
virtual |
Invoked by the shell to obtain a platform specific vsync waiter. It is optional for platforms to override this method and provide a custom vsync waiter because a timer based fall-back waiter is used by default. However, it is highly recommended that platform provide their own Vsync waiter as the timer based fall-back will not render frames aligned with vsync boundaries.
Definition at line 21 of file platform_view.cc.
void flutter::PlatformView::DispatchPlatformMessage | ( | std::unique_ptr< PlatformMessage > | message | ) |
Used by embedders to dispatch a platform message to a running root isolate hosted by the engine. If an isolate is not running, the message is dropped. If there is no one on the other side listening on the channel, the message is dropped. When a platform message is dropped, any response handles associated with that message will be dropped as well. All users of platform messages must assume that message may not be delivered and/or their response handles may not be invoked. Platform messages are not buffered.
For embedders that wish to respond to platform message directed from the framework to the embedder, the HandlePlatformMessage
method may be overridden.
[in] | message | The platform message to deliver to the root isolate. |
Definition at line 28 of file platform_view.cc.
void flutter::PlatformView::DispatchPointerDataPacket | ( | std::unique_ptr< PointerDataPacket > | packet | ) |
Dispatches pointer events from the embedder to the framework. Each pointer data packet may contain multiple pointer input events. Each call to this method wakes up the UI thread.
[in] | packet | The pointer data packet to dispatch to the framework. |
Definition at line 33 of file platform_view.cc.
void flutter::PlatformView::DispatchSemanticsAction | ( | int32_t | node_id, |
SemanticsAction | action, | ||
fml::MallocMapping | args | ||
) |
Used by embedders to dispatch an accessibility action to a running isolate hosted by the engine.
[in] | node_id | The identifier of the accessibility node on which to perform the action. |
[in] | action | The action |
[in] | args | The arguments |
Definition at line 38 of file platform_view.cc.
|
virtual |
Returns a platform-specific PointerDataDispatcherMaker so the Engine
can construct the PointerDataPacketDispatcher based on platforms.
Reimplemented in flutter::PlatformViewIOS.
Definition at line 112 of file platform_view.cc.
|
virtual |
Reimplemented in flutter::testing::ShellTestPlatformViewGL, and flutter::TesterPlatformView.
Definition at line 106 of file platform_view.cc.
|
virtual |
Specifies a delegate that will receive PlatformMessages from Flutter to the host platform.
If this returns null
that means PlatformMessages should be sent to the PlatformView. That is to protect legacy behavior, any embedder that wants to support executing Platform Channel handlers on background threads should be returning a thread-safe PlatformMessageHandler instead.
Reimplemented in flutter::PlatformViewAndroid, flutter::PlatformViewIOS, and flutter::PlatformViewEmbedder.
Definition at line 206 of file platform_view.cc.
|
virtual |
Synchronously invokes platform-specific APIs to apply the system text scaling on the given unscaled font size.
Platforms that support this feature (currently it's only implemented for Android SDK level 34+) will send a valid configuration_id to potential callers, before this method can be called.
[in] | unscaled_font_size | The unscaled font size specified by the app developer. The value is in logical pixels, and is guaranteed to be finite and non-negative. |
[in] | configuration_id | The unique id of the configuration to use for computing the scaled font size. |
Definition at line 214 of file platform_view.cc.
const Settings & flutter::PlatformView::GetSettings | ( | ) | const |
Get the settings for this platform view instance.
Definition at line 210 of file platform_view.cc.
fml::WeakPtr< PlatformView > flutter::PlatformView::GetWeakPtr | ( | ) | const |
Returns a weak pointer to the platform view. Since the platform view may only be created, accessed and destroyed on the platform thread, any access to the platform view from a non-platform task runner needs a weak pointer to the platform view along with a reference to the platform task runner. A task must be posted to the platform task runner with the weak pointer captured in the same. The platform view method may only be called in the posted task once the weak pointer validity has been checked. This method is used by callers to obtain that weak pointer.
Definition at line 118 of file platform_view.cc.
|
virtual |
Overridden by embedders to perform actions in response to platform messages sent from the framework to the embedder. Default implementation of this method simply returns an empty response.
Embedders that wish to send platform messages to the framework may use the DispatchPlatformMessage
method. This method is for messages that go the other way.
[in] | message | The message |
Reimplemented in flutter::PlatformViewEmbedder.
Definition at line 129 of file platform_view.cc.
|
virtual |
Loads the Dart shared library into the Dart VM. When the Dart library is loaded successfully, the Dart future returned by the originating loadLibrary() call completes.
The Dart compiler may generate separate shared libraries files called 'loading units' when libraries are imported as deferred. Each of these shared libraries are identified by a unique loading unit id. Callers should open and resolve a SymbolMapping from the shared library. The Mappings should be moved into this method, as ownership will be assumed by the dart isolate after successful loading and released after shutdown of the dart isolate. If loading fails, the mappings will naturally go out of scope.
This method is paired with a RequestDartDeferredLibrary invocation that provides the embedder with the loading unit id of the deferred library to load.
[in] | loading_unit_id | The unique id of the deferred library's loading unit, as passed in by RequestDartDeferredLibrary. |
[in] | snapshot_data | Dart snapshot data of the loading unit's shared library. |
[in] | snapshot_data | Dart snapshot instructions of the loading unit's shared library. |
Reimplemented in flutter::PlatformViewAndroid.
Definition at line 183 of file platform_view.cc.
|
virtual |
Indicates to the dart VM that the request to load a deferred library with the specified loading unit id has failed.
The dart future returned by the initiating loadLibrary() call will complete with an error.
[in] | loading_unit_id | The unique id of the deferred library's loading unit, as passed in by RequestDartDeferredLibrary. |
[in] | error_message | The error message that will appear in the dart Future. |
[in] | transient | A transient error is a failure due to temporary conditions such as no network. Transient errors allow the dart VM to re-request the same deferred library and loading_unit_id again. Non-transient errors are permanent and attempts to re-request the library will instantly complete with an error. |
Reimplemented in flutter::PlatformViewAndroid.
Definition at line 188 of file platform_view.cc.
void flutter::PlatformView::MarkTextureFrameAvailable | ( | int64_t | texture_id | ) |
Used by the embedder to notify the rasterizer that the context of the previously registered texture have been updated. Typically, Flutter will only render a frame if there is an updated layer tree. However, in cases where the layer tree is static but one of the externally composited textures has been updated by the embedder, the embedder needs to notify the rasterizer to render a new frame. In such cases, the existing layer tree may be reused with the frame re-composited with all updated external textures. Unlike the calls to register and unregister the texture, this call must be made each time a new texture frame is available.
[in] | texture_id | The identifier of the texture that has been updated. |
Definition at line 146 of file platform_view.cc.
void flutter::PlatformView::NotifyCreated | ( | ) |
Used by embedders to notify the shell that a platform view has been created. This notification is used to create a rendering surface and pick the client rendering API to use to render into this surface. No frames will be scheduled or rendered before this call. The surface must remain valid till the corresponding call to NotifyDestroyed.
Definition at line 58 of file platform_view.cc.
|
virtual |
Used by embedders to notify the shell that the platform view has been destroyed. This notification used to collect the rendering surface and all associated resources. Frame scheduling is also suspended.
Reimplemented in flutter::PlatformViewAndroid.
Definition at line 81 of file platform_view.cc.
|
virtual |
Gives embedders a chance to react to a "cold restart" of the running isolate. The default implementation of this method does nothing.
While a "hot restart" patches a running isolate, a "cold restart" restarts the root isolate in a running shell.
Definition at line 136 of file platform_view.cc.
void flutter::PlatformView::RegisterTexture | ( | std::shared_ptr< flutter::Texture > | texture | ) |
Used by the embedder to specify a texture that it wants the rasterizer to composite within the Flutter layer tree. All textures must have a unique identifier. When the rasterizer encounters an external texture within its hierarchy, it gives the embedder a chance to update that texture on the raster thread before it composites the same on-screen.
MarkTextureFrameAvailable
with the specified texture identifier is sufficient to make Flutter re-render the frame with the updated texture composited in-line.[in] | texture | The texture that is being updated by the embedder but composited by Flutter in its own hierarchy. |
Definition at line 138 of file platform_view.cc.
|
virtual |
Used by the shell to notify the embedder that the resource context previously obtained via a call to CreateResourceContext()
is being collected. The embedder is free to collect an platform specific resources associated with this context.
Definition at line 110 of file platform_view.cc.
void flutter::PlatformView::RemoveView | ( | int64_t | view_id, |
RemoveViewCallback | callback | ||
) |
Used by embedders to notify the shell of a removed non-implicit view.
This method notifies the shell to deallocate resources and inform Dart about the removal. Finally, it invokes |callback| with whether the operation is successful.
This operation is asynchronous. The embedder should not deallocate resources until the |callback| is invoked.
The callback is called on a different thread.
Do not use for implicit views, which are never removed throughout the lifetime of the app. Removing |kFlutterImplicitViewId| or an non-existent view ID will fail, indicated by |callback| returning false.
[in] | view_id | The view ID of the view to be removed. |
[in] | callback | The callback that's invoked once the shell has attempted to remove the view. |
Definition at line 96 of file platform_view.cc.
|
virtual |
Invoked when the dart VM requests that a deferred library be loaded. Notifies the engine that the deferred library identified by the specified loading unit id should be downloaded and loaded into the Dart VM via LoadDartDeferredLibrary
Upon encountering errors or otherwise failing to load a loading unit with the specified id, the failure should be directly reported to dart by calling LoadDartDeferredLibraryFailure
to ensure the waiting dart future completes with an error.
[in] | loading_unit_id | The unique id of the deferred library's loading unit. This id is to be passed back into LoadDartDeferredLibrary in order to identify which deferred library to load. |
Definition at line 181 of file platform_view.cc.
void flutter::PlatformView::ScheduleFrame | ( | ) |
Used by embedders to schedule a frame. In response to this call, the framework may need to start generating a new frame.
Definition at line 85 of file platform_view.cc.
|
virtual |
Used by the framework to tell the embedder that it has registered a listener on a given channel.
[in] | name | The name of the channel on which the listener has set or cleared a listener. |
[in] | listening | True if a listener has been set, false if it has been cleared. |
Definition at line 127 of file platform_view.cc.
|
virtual |
Used by the embedder to specify the features to enable in the accessibility tree generated by the isolate. This information is forwarded to the root isolate hosted by the engine on the UI thread.
The engine does not care about the accessibility feature flags as all it does is forward this information from the embedder to the framework. However, curious readers may refer to AccessibilityFeatures
in window.dart
for currently supported accessibility feature flags.
[in] | flags | The features to enable in the accessibility tree. |
Definition at line 49 of file platform_view.cc.
void flutter::PlatformView::SetNextFrameCallback | ( | const fml::closure & | closure | ) |
Sets a callback that gets executed when the rasterizer renders the next frame. Due to the asynchronous nature of rendering in Flutter, embedders usually add a placeholder over the contents in which Flutter is going to render when Flutter is first initialized. This callback may be used as a signal to remove that placeholder. The callback is executed on the render task runner and not the platform task runner. It is the embedder's responsibility to re-thread as necessary.
[in] | closure | The callback to execute on the render thread when the next frame gets rendered. |
Definition at line 165 of file platform_view.cc.
|
virtual |
Used by embedder to notify the running isolate hosted by the engine on the UI thread that the accessibility tree needs to be generated.
[in] | enabled | Whether the accessibility tree needs to be generated. |
Reimplemented in flutter::PlatformViewIOS, and flutter_runner::PlatformView.
Definition at line 45 of file platform_view.cc.
void flutter::PlatformView::SetViewportMetrics | ( | int64_t | view_id, |
const ViewportMetrics & | metrics | ||
) |
Used by embedders to specify the updated viewport metrics for a view. In response to this call, on the raster thread, the rasterizer may need to be reconfigured to the updated viewport dimensions. On the UI thread, the framework may need to start generating a new frame for the updated viewport metrics as well.
[in] | view_id | The ID for the view that metrics describes. |
[in] | metrics | The updated viewport metrics. |
Definition at line 53 of file platform_view.cc.
void flutter::PlatformView::UnregisterTexture | ( | int64_t | texture_id | ) |
Used by the embedder to notify the rasterizer that it will no longer attempt to composite the specified texture within the layer tree. This allows the rasterizer to collect associated resources.
[in] | texture_id | The identifier of the texture to unregister. If the texture has not been previously registered, this call does nothing. |
Definition at line 142 of file platform_view.cc.
|
virtual |
Replaces the asset resolver handled by the engine's AssetManager of the specified type
with updated_asset_resolver
. The matching AssetResolver is removed and replaced with updated_asset_resolvers
.
AssetResolvers should be updated when the existing resolver becomes obsolete and a newer one becomes available that provides updated access to the same type of assets as the existing one. This update process is meant to be performed at runtime.
If a null resolver is provided, nothing will be done. If no matching resolver is found, the provided resolver will be added to the end of the AssetManager resolvers queue. The replacement only occurs with the first matching resolver. Any additional matching resolvers are untouched.
[in] | updated_asset_resolver | The asset resolver to replace the resolver of matching type with. |
[in] | type | The type of AssetResolver to update. Only resolvers of the specified type will be replaced by the updated resolver. |
Reimplemented in flutter::PlatformViewAndroid.
Definition at line 194 of file platform_view.cc.
|
virtual |
Used by the framework to tell the embedder to apply the specified semantics node updates. The default implementation of this method does nothing.
[in] | updates | A map with the stable semantics node identifier as key and the node properties as the value. |
[in] | actions | A map with the stable semantics node identifier as key and the custom node action as the value. |
Reimplemented in flutter::PlatformViewEmbedder.
Definition at line 122 of file platform_view.cc.
|
protected |
Definition at line 961 of file platform_view.h.
|
protected |
Definition at line 962 of file platform_view.h.
|
protected |
Definition at line 963 of file platform_view.h.