Class PlatformViewsController
- java.lang.Object
-
- io.flutter.plugin.platform.PlatformViewsController
-
- All Implemented Interfaces:
PlatformViewsAccessibilityDelegate
public class PlatformViewsController extends Object implements PlatformViewsAccessibilityDelegate
Manages platform views.Each
FlutterPluginRegistry
has a single platform views controller. A platform views controller can be attached to at most one Flutter view.
-
-
Constructor Summary
Constructors Constructor Description PlatformViewsController()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attach(Context context, TextureRegistry textureRegistry, DartExecutor dartExecutor)
Attaches this platform views controller to its input and output channels.void
attachAccessibilityBridge(AccessibilityBridge accessibilityBridge)
Attaches an accessibility bridge for this platform views accessibility delegate.void
attachTextInputPlugin(TextInputPlugin textInputPlugin)
Attaches this controller to a text input plugin.void
attachToFlutterRenderer(FlutterRenderer flutterRenderer)
void
attachToView(View flutterView)
ThisPlatformViewsController
and itsFlutterEngine
is now attached to an AndroidView
that renders a Flutter UI.boolean
checkInputConnectionProxy(View view)
Returns true if Flutter should perform input connection proxying for the view.FlutterOverlaySurface
createOverlaySurface()
Creates an overlay surface while the Flutter view is rendered byFlutterImageView
.FlutterOverlaySurface
createOverlaySurface(FlutterImageView imageView)
Creates and tracks the overlay surface.void
destroyOverlaySurfaces()
Destroys the overlay surfaces and removes them from the view hierarchy.void
detach()
Detaches this platform views controller.void
detachAccessibiltyBridge()
Detaches the current accessibility bridge.void
detachFromView()
ThisPlatformViewController
and itsFlutterEngine
are no longer attached to an AndroidView
that renders a Flutter UI.void
detachTextInputPlugin()
Detaches this controller from the currently attached text input plugin.View
getPlatformViewById(Integer id)
Returns the root of the view hierarchy for the platform view with the requested id, or null if there is no corresponding view.PlatformViewRegistry
getRegistry()
void
onAttachedToJNI()
Invoked when theFlutterEngine
that owns thisPlatformViewsController
attaches to JNI.void
onBeginFrame()
void
onDetachedFromJNI()
Invoked when theFlutterEngine
that owns thisPlatformViewsController
detaches from JNI.void
onDisplayOverlaySurface(int id, int x, int y, int width, int height)
Called when an overlay surface is displayed in the current frame.void
onDisplayPlatformView(int viewId, int x, int y, int width, int height, int viewWidth, int viewHeight, FlutterMutatorsStack mutatorsStack)
Called when a platform view id displayed in the current frame.void
onEndFrame()
Called byFlutterJNI
when the Flutter frame was submitted.void
onPreEngineRestart()
MotionEvent
toMotionEvent(float density, PlatformViewsChannel.PlatformViewTouch touch, boolean usingVirtualDiplays)
boolean
usesVirtualDisplay(Integer id)
Returns true if the platform view uses virtual displays.
-
-
-
Method Detail
-
toMotionEvent
public MotionEvent toMotionEvent(float density, PlatformViewsChannel.PlatformViewTouch touch, boolean usingVirtualDiplays)
-
attach
public void attach(Context context, TextureRegistry textureRegistry, @NonNull DartExecutor dartExecutor)
Attaches this platform views controller to its input and output channels.- Parameters:
context
- The base context that will be passed to embedded views created by this controller. This should be the context of the Activity hosting the Flutter application.textureRegistry
- The texture registry which provides the output textures into which the embedded views will be rendered.dartExecutor
- The dart execution context, which is used to set up a system channel.
-
detach
@UiThread public void detach()
Detaches this platform views controller.This is typically called when a Flutter applications moves to run in the background, or is destroyed. After calling this the platform views controller will no longer listen to it's previous messenger, and will not maintain references to the texture registry, context, and messenger passed to the previous attach call.
-
attachToView
public void attachToView(@NonNull View flutterView)
ThisPlatformViewsController
and itsFlutterEngine
is now attached to an AndroidView
that renders a Flutter UI.
-
detachFromView
public void detachFromView()
ThisPlatformViewController
and itsFlutterEngine
are no longer attached to an AndroidView
that renders a Flutter UI.All platform views controlled by this
PlatformViewController
will be detached from the previously attachedView
.
-
attachAccessibilityBridge
public void attachAccessibilityBridge(AccessibilityBridge accessibilityBridge)
Description copied from interface:PlatformViewsAccessibilityDelegate
Attaches an accessibility bridge for this platform views accessibility delegate.Accessibility events originating in platform views belonging to this delegate will be delegated to this accessibility bridge.
- Specified by:
attachAccessibilityBridge
in interfacePlatformViewsAccessibilityDelegate
-
detachAccessibiltyBridge
public void detachAccessibiltyBridge()
Description copied from interface:PlatformViewsAccessibilityDelegate
Detaches the current accessibility bridge.Any accessibility events sent by platform views belonging to this delegate will be ignored until a new accessibility bridge is attached.
- Specified by:
detachAccessibiltyBridge
in interfacePlatformViewsAccessibilityDelegate
-
attachTextInputPlugin
public void attachTextInputPlugin(TextInputPlugin textInputPlugin)
Attaches this controller to a text input plugin.While a text input plugin is available, the platform views controller interacts with it to facilitate delegation of text input connections to platform views.
A platform views controller should be attached to a text input plugin whenever it is possible for the Flutter framework to receive text input.
-
detachTextInputPlugin
public void detachTextInputPlugin()
Detaches this controller from the currently attached text input plugin.
-
checkInputConnectionProxy
public boolean checkInputConnectionProxy(@Nullable View view)
Returns true if Flutter should perform input connection proxying for the view.If the view is a platform view managed by this platform views controller returns true. Else if the view was created in a platform view's VD, delegates the decision to the platform view's
View.checkInputConnectionProxy(View)
method. Else returns false.
-
getRegistry
public PlatformViewRegistry getRegistry()
-
onAttachedToJNI
public void onAttachedToJNI()
Invoked when theFlutterEngine
that owns thisPlatformViewsController
attaches to JNI.
-
onDetachedFromJNI
public void onDetachedFromJNI()
Invoked when theFlutterEngine
that owns thisPlatformViewsController
detaches from JNI.
-
onPreEngineRestart
public void onPreEngineRestart()
-
getPlatformViewById
public View getPlatformViewById(Integer id)
Description copied from interface:PlatformViewsAccessibilityDelegate
Returns the root of the view hierarchy for the platform view with the requested id, or null if there is no corresponding view.- Specified by:
getPlatformViewById
in interfacePlatformViewsAccessibilityDelegate
-
usesVirtualDisplay
public boolean usesVirtualDisplay(Integer id)
Description copied from interface:PlatformViewsAccessibilityDelegate
Returns true if the platform view uses virtual displays.- Specified by:
usesVirtualDisplay
in interfacePlatformViewsAccessibilityDelegate
-
attachToFlutterRenderer
public void attachToFlutterRenderer(FlutterRenderer flutterRenderer)
-
onDisplayPlatformView
public void onDisplayPlatformView(int viewId, int x, int y, int width, int height, int viewWidth, int viewHeight, FlutterMutatorsStack mutatorsStack)
Called when a platform view id displayed in the current frame.- Parameters:
viewId
- The ID of the platform view.x
- The left position relative toFlutterView
.y
- The top position relative toFlutterView
.width
- The width of the platform view.height
- The height of the platform view.viewWidth
- The original width of the platform view before applying the mutator stack.viewHeight
- The original height of the platform view before applying the mutator stack.mutatorsStack
- The mutator stack. This member is not intended for public use, and is only visible for testing.
-
onDisplayOverlaySurface
public void onDisplayOverlaySurface(int id, int x, int y, int width, int height)
Called when an overlay surface is displayed in the current frame.- Parameters:
id
- The ID of the surface.x
- The left position relative toFlutterView
.y
- The top position relative toFlutterView
.width
- The width of the surface.height
- The height of the surface. This member is not intended for public use, and is only visible for testing.
-
onBeginFrame
public void onBeginFrame()
-
onEndFrame
public void onEndFrame()
Called byFlutterJNI
when the Flutter frame was submitted.This member is not intended for public use, and is only visible for testing.
-
createOverlaySurface
public FlutterOverlaySurface createOverlaySurface(@NonNull FlutterImageView imageView)
Creates and tracks the overlay surface.- Parameters:
imageView
- The surface that displays the overlay.- Returns:
- Wrapper object that provides the layer id and the surface. This member is not intended for public use, and is only visible for testing.
-
createOverlaySurface
public FlutterOverlaySurface createOverlaySurface()
Creates an overlay surface while the Flutter view is rendered byFlutterImageView
.This method is invoked by
FlutterJNI
only.This member is not intended for public use, and is only visible for testing.
-
destroyOverlaySurfaces
public void destroyOverlaySurfaces()
Destroys the overlay surfaces and removes them from the view hierarchy.This method is used only internally by
FlutterJNI
.This member is not intended for public use, and is only visible for testing.
-
-