Class FlutterView
- All Implemented Interfaces:
Drawable.Callback
,AccessibilityEventSource
,KeyEvent.Callback
,ViewManager
,ViewParent
,KeyboardManager.ViewDelegate
,io.flutter.plugin.mouse.MouseCursorPlugin.MouseCursorViewDelegate
A FlutterView
's UI is painted by a corresponding FlutterEngine
.
A FlutterView
can operate in 2 different RenderMode
s:
RenderMode.surface
, which paints a Flutter UI to aSurfaceView
. This mode has the best performance, but aFlutterView
in this mode cannot be positioned between 2 other AndroidView
s in the z-index, nor can it be animated/transformed. Unless the special capabilities of aSurfaceTexture
are required, developers should strongly prefer this render mode.RenderMode.texture
, which paints a Flutter UI to aSurfaceTexture
. This mode is not as performant asRenderMode.surface
, but aFlutterView
in this mode can be animated and transformed, as well as positioned in the z-index between 2+ other AndroidViews
. Unless the special capabilities of aSurfaceTexture
are required, developers should strongly prefer theRenderMode.surface
render mode.
SurfaceView
and TextureView
.-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Listener that is notified when aFlutterEngine
is attached to/detached from a givenFlutterView
.Nested classes/interfaces inherited from class android.widget.FrameLayout
FrameLayout.LayoutParams
Nested classes/interfaces inherited from class android.view.ViewGroup
ViewGroup.MarginLayoutParams, ViewGroup.OnHierarchyChangeListener
Nested classes/interfaces inherited from class android.view.View
View.AccessibilityDelegate, View.BaseSavedState, View.DragShadowBuilder, View.MeasureSpec, View.OnApplyWindowInsetsListener, View.OnAttachStateChangeListener, View.OnCapturedPointerListener, View.OnClickListener, View.OnContextClickListener, View.OnCreateContextMenuListener, View.OnDragListener, View.OnFocusChangeListener, View.OnGenericMotionListener, View.OnHoverListener, View.OnKeyListener, View.OnLayoutChangeListener, View.OnLongClickListener, View.OnScrollChangeListener, View.OnSystemUiVisibilityChangeListener, View.OnTouchListener, View.OnUnhandledKeyEventListener
-
Field Summary
Fields inherited from class android.view.ViewGroup
CLIP_TO_PADDING_MASK, FOCUS_AFTER_DESCENDANTS, FOCUS_BEFORE_DESCENDANTS, FOCUS_BLOCK_DESCENDANTS, LAYOUT_MODE_CLIP_BOUNDS, LAYOUT_MODE_OPTICAL_BOUNDS, PERSISTENT_ALL_CACHES, PERSISTENT_ANIMATION_CACHE, PERSISTENT_NO_CACHE, PERSISTENT_SCROLLING_CACHE
Fields inherited from class android.view.View
ACCESSIBILITY_DATA_SENSITIVE_AUTO, ACCESSIBILITY_DATA_SENSITIVE_NO, ACCESSIBILITY_DATA_SENSITIVE_YES, ACCESSIBILITY_LIVE_REGION_ASSERTIVE, ACCESSIBILITY_LIVE_REGION_NONE, ACCESSIBILITY_LIVE_REGION_POLITE, ALPHA, AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR, AUTOFILL_HINT_CREDIT_CARD_NUMBER, AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE, AUTOFILL_HINT_EMAIL_ADDRESS, AUTOFILL_HINT_NAME, AUTOFILL_HINT_PASSWORD, AUTOFILL_HINT_PHONE, AUTOFILL_HINT_POSTAL_ADDRESS, AUTOFILL_HINT_POSTAL_CODE, AUTOFILL_HINT_USERNAME, AUTOFILL_TYPE_DATE, AUTOFILL_TYPE_LIST, AUTOFILL_TYPE_NONE, AUTOFILL_TYPE_TEXT, AUTOFILL_TYPE_TOGGLE, DRAG_FLAG_ACCESSIBILITY_ACTION, DRAG_FLAG_GLOBAL, DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION, DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION, DRAG_FLAG_GLOBAL_URI_READ, DRAG_FLAG_GLOBAL_URI_WRITE, DRAG_FLAG_OPAQUE, DRAWING_CACHE_QUALITY_AUTO, DRAWING_CACHE_QUALITY_HIGH, DRAWING_CACHE_QUALITY_LOW, EMPTY_STATE_SET, ENABLED_FOCUSED_SELECTED_STATE_SET, ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_FOCUSED_STATE_SET, ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, ENABLED_SELECTED_STATE_SET, ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, ENABLED_STATE_SET, ENABLED_WINDOW_FOCUSED_STATE_SET, FIND_VIEWS_WITH_CONTENT_DESCRIPTION, FIND_VIEWS_WITH_TEXT, FOCUS_BACKWARD, FOCUS_DOWN, FOCUS_FORWARD, FOCUS_LEFT, FOCUS_RIGHT, FOCUS_UP, FOCUSABLE, FOCUSABLE_AUTO, FOCUSABLES_ALL, FOCUSABLES_TOUCH_MODE, FOCUSED_SELECTED_STATE_SET, FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, FOCUSED_STATE_SET, FOCUSED_WINDOW_FOCUSED_STATE_SET, GONE, HAPTIC_FEEDBACK_ENABLED, IMPORTANT_FOR_ACCESSIBILITY_AUTO, IMPORTANT_FOR_ACCESSIBILITY_NO, IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, IMPORTANT_FOR_ACCESSIBILITY_YES, IMPORTANT_FOR_AUTOFILL_AUTO, IMPORTANT_FOR_AUTOFILL_NO, IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_AUTOFILL_YES, IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, IMPORTANT_FOR_CONTENT_CAPTURE_NO, IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, IMPORTANT_FOR_CONTENT_CAPTURE_YES, IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, INVISIBLE, KEEP_SCREEN_ON, LAYER_TYPE_HARDWARE, LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYOUT_DIRECTION_INHERIT, LAYOUT_DIRECTION_LOCALE, LAYOUT_DIRECTION_LTR, LAYOUT_DIRECTION_RTL, MEASURED_HEIGHT_STATE_SHIFT, MEASURED_SIZE_MASK, MEASURED_STATE_MASK, MEASURED_STATE_TOO_SMALL, NO_ID, NOT_FOCUSABLE, OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_NEVER, PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET, PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_STATE_SET, PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_SELECTED_STATE_SET, PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_ENABLED_STATE_SET, PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_SELECTED_STATE_SET, PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_FOCUSED_STATE_SET, PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET, PRESSED_SELECTED_STATE_SET, PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET, PRESSED_STATE_SET, PRESSED_WINDOW_FOCUSED_STATE_SET, ROTATION, ROTATION_X, ROTATION_Y, SCALE_X, SCALE_Y, SCREEN_STATE_OFF, SCREEN_STATE_ON, SCROLL_AXIS_HORIZONTAL, SCROLL_AXIS_NONE, SCROLL_AXIS_VERTICAL, SCROLL_CAPTURE_HINT_AUTO, SCROLL_CAPTURE_HINT_EXCLUDE, SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS, SCROLL_CAPTURE_HINT_INCLUDE, SCROLL_INDICATOR_BOTTOM, SCROLL_INDICATOR_END, SCROLL_INDICATOR_LEFT, SCROLL_INDICATOR_RIGHT, SCROLL_INDICATOR_START, SCROLL_INDICATOR_TOP, SCROLLBAR_POSITION_DEFAULT, SCROLLBAR_POSITION_LEFT, SCROLLBAR_POSITION_RIGHT, SCROLLBARS_INSIDE_INSET, SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_OUTSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY, SELECTED_STATE_SET, SELECTED_WINDOW_FOCUSED_STATE_SET, SOUND_EFFECTS_ENABLED, STATUS_BAR_HIDDEN, STATUS_BAR_VISIBLE, SYSTEM_UI_FLAG_FULLSCREEN, SYSTEM_UI_FLAG_HIDE_NAVIGATION, SYSTEM_UI_FLAG_IMMERSIVE, SYSTEM_UI_FLAG_IMMERSIVE_STICKY, SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, SYSTEM_UI_FLAG_LAYOUT_STABLE, SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, SYSTEM_UI_FLAG_LOW_PROFILE, SYSTEM_UI_FLAG_VISIBLE, SYSTEM_UI_LAYOUT_FLAGS, TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_GRAVITY, TEXT_ALIGNMENT_INHERIT, TEXT_ALIGNMENT_TEXT_END, TEXT_ALIGNMENT_TEXT_START, TEXT_ALIGNMENT_VIEW_END, TEXT_ALIGNMENT_VIEW_START, TEXT_DIRECTION_ANY_RTL, TEXT_DIRECTION_FIRST_STRONG, TEXT_DIRECTION_FIRST_STRONG_LTR, TEXT_DIRECTION_FIRST_STRONG_RTL, TEXT_DIRECTION_INHERIT, TEXT_DIRECTION_LOCALE, TEXT_DIRECTION_LTR, TEXT_DIRECTION_RTL, TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, VIEW_LOG_TAG, VISIBLE, WINDOW_FOCUSED_STATE_SET, X, Y, Z
-
Constructor Summary
ConstructorDescriptionFlutterView
(Context context) Constructs aFlutterView
programmatically, without any XML attributes.FlutterView
(Context context, AttributeSet attrs) Constructs aFlutterView
in an XML-inflation-compliant manner.FlutterView
(Context context, FlutterImageView flutterImageView) Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterImageView
to render the Flutter UI.FlutterView
(Context context, FlutterSurfaceView flutterSurfaceView) Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterSurfaceView
to render the Flutter UI, and allows selection of atransparencyMode
.FlutterView
(Context context, FlutterTextureView flutterTextureView) Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterTextureView
to render the Flutter UI, and allows selection of atransparencyMode
.FlutterView
(Context context, RenderMode renderMode) Deprecated.FlutterView
(Context context, RenderMode renderMode, TransparencyMode transparencyMode) Deprecated.FlutterView
(Context context, TransparencyMode transparencyMode) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionboolean
void
Adds aFlutterView.FlutterEngineAttachmentListener
, which is notified whenever thisFlutterView
attached to/detaches from aFlutterEngine
.void
Adds the givenlistener
to thisFlutterView
, to be notified upon Flutter's first rendered frame.void
void
attachToFlutterEngine
(FlutterEngine flutterEngine) Connects thisFlutterView
to the givenFlutterEngine
.void
autofill
(SparseArray<AutofillValue> values) boolean
Allows aView
that is not currently the input connection target to invoke commands on theInputMethodManager
, which is otherwise disallowed.void
Converts the current render surface to aFlutterImageView
if it's not one already.void
Disconnects thisFlutterView
from a previously attachedFlutterEngine
.boolean
dispatchKeyEvent
(KeyEvent event) Invoked when a hardware key is pressed or released.findViewByAccessibilityIdTraversal
(int accessibilityId) Prior to Android Q, it's impossible to add real views as descendants of virtual nodes.Returns theFlutterEngine
to which thisFlutterView
is currently attached, or null if thisFlutterView
is not currently attached to aFlutterEngine
.Returns aBinaryMessenger
to send platform messages with.getSystemPointerIcon
(int type) Gets a system pointer icon object for the giventype
.boolean
Returns true if an attachedFlutterEngine
has rendered at least 1 frame to thisFlutterView
.boolean
Returns true if thisFlutterView
is currently attached to aFlutterEngine
.final WindowInsets
onApplyWindowInsets
(WindowInsets insets) Invoked when Android's desired window insets change, i.e., padding.protected void
Invoked when this is attached to the window.protected void
onConfigurationChanged
(Configuration newConfig) Sends relevant configuration data from Android to Flutter when the AndroidConfiguration
changes.onCreateInputConnection
(EditorInfo outAttrs) Creates anInputConnection
to work with aInputMethodManager
.protected void
Invoked when this is detached from the window.boolean
onGenericMotionEvent
(MotionEvent event) Invoked by Android when a generic motion event occurs, e.g., joystick movement, mouse hover, track pad touches, scroll wheel movements, etc.boolean
onHoverEvent
(MotionEvent event) Invoked by Android when a hover-compliant input system causes a hover event.void
onProvideAutofillVirtualStructure
(ViewStructure structure, int flags) protected void
onSizeChanged
(int width, int height, int oldWidth, int oldHeight) Invoked when thisFlutterView
changes size, including upon initial measure.boolean
onTextInputKeyEvent
(KeyEvent keyEvent) Send aKeyEvent
that is not handled by the keyboard responders to the text input system.boolean
onTouchEvent
(MotionEvent event) Invoked by Android when a user touch event occurs.void
redispatch
(KeyEvent keyEvent) Send aKeyEvent
that is not handled by Flutter back to the platform.void
Removes aFlutterView.FlutterEngineAttachmentListener
that was previously added withaddFlutterEngineAttachmentListener(FlutterEngineAttachmentListener)
.void
Removes the givenlistener
, which was previously added withaddOnFirstFrameRenderedListener(FlutterUiDisplayListener)
.void
revertImageView
(Runnable onDone) If the surface is rendered by aFlutterImageView
, then calling this method will stop rendering to aFlutterImageView
, and render on the previous surface instead.void
setVisibility
(int visibility) protected void
setWindowInfoListenerDisplayFeatures
(androidx.window.layout.WindowLayoutInfo layoutInfo) RefreshWindowInfoTracker
andDisplayCutout
display features.Methods inherited from class android.widget.FrameLayout
checkLayoutParams, generateDefaultLayoutParams, generateLayoutParams, generateLayoutParams, getAccessibilityClassName, getConsiderGoneChildrenWhenMeasuring, getMeasureAllChildren, onLayout, onMeasure, setForegroundGravity, setMeasureAllChildren, shouldDelayChildPressedState
Methods inherited from class android.view.ViewGroup
addChildrenForAccessibility, addExtraDataToAccessibilityNodeInfo, addFocusables, addKeyboardNavigationClusters, addStatesFromChildren, addTouchables, addView, addView, addView, addView, addView, addViewInLayout, addViewInLayout, attachLayoutAnimationParameters, attachViewToParent, bringChildToFront, canAnimate, childDrawableStateChanged, childHasTransientStateChanged, cleanupLayoutState, clearChildFocus, clearDisappearingChildren, clearFocus, debug, detachAllViewsFromParent, detachViewFromParent, detachViewFromParent, detachViewsFromParent, dispatchApplyWindowInsets, dispatchCapturedPointerEvent, dispatchConfigurationChanged, dispatchCreateViewTranslationRequest, dispatchDisplayHint, dispatchDragEvent, dispatchDraw, dispatchDrawableHotspotChanged, dispatchFinishTemporaryDetach, dispatchFreezeSelfOnly, dispatchGenericFocusedEvent, dispatchGenericPointerEvent, dispatchHoverEvent, dispatchKeyEventPreIme, dispatchKeyShortcutEvent, dispatchPointerCaptureChanged, dispatchProvideAutofillStructure, dispatchProvideStructure, dispatchRestoreInstanceState, dispatchSaveInstanceState, dispatchScrollCaptureSearch, dispatchSetActivated, dispatchSetPressed, dispatchSetSelected, dispatchStartTemporaryDetach, dispatchSystemUiVisibilityChanged, dispatchThawSelfOnly, dispatchTouchEvent, dispatchTrackballEvent, dispatchUnhandledMove, dispatchVisibilityChanged, dispatchWindowFocusChanged, dispatchWindowInsetsAnimationEnd, dispatchWindowInsetsAnimationPrepare, dispatchWindowInsetsAnimationProgress, dispatchWindowInsetsAnimationStart, dispatchWindowSystemUiVisiblityChanged, dispatchWindowVisibilityChanged, drawableStateChanged, drawChild, endViewTransition, findFocus, findOnBackInvokedDispatcherForChild, findViewsWithText, focusableViewAvailable, focusSearch, gatherTransparentRegion, getChildAt, getChildCount, getChildDrawingOrder, getChildDrawingOrder, getChildMeasureSpec, getChildStaticTransformation, getChildVisibleRect, getClipChildren, getClipToPadding, getDescendantFocusability, getFocusedChild, getLayoutAnimation, getLayoutAnimationListener, getLayoutMode, getLayoutTransition, getNestedScrollAxes, getOverlay, getPersistentDrawingCache, getTouchscreenBlocksFocus, hasFocus, hasTransientState, indexOfChild, invalidateChild, invalidateChildInParent, isAlwaysDrawnWithCacheEnabled, isAnimationCacheEnabled, isChildrenDrawingOrderEnabled, isChildrenDrawnWithCacheEnabled, isLayoutSuppressed, isMotionEventSplittingEnabled, isTransitionGroup, jumpDrawablesToCurrentState, layout, measureChild, measureChildren, measureChildWithMargins, notifySubtreeAccessibilityStateChanged, offsetDescendantRectToMyCoords, offsetRectIntoDescendantCoords, onCreateDrawableState, onDescendantInvalidated, onInterceptHoverEvent, onInterceptTouchEvent, onNestedFling, onNestedPreFling, onNestedPrePerformAccessibilityAction, onNestedPreScroll, onNestedScroll, onNestedScrollAccepted, onRequestFocusInDescendants, onRequestSendAccessibilityEvent, onResolvePointerIcon, onStartNestedScroll, onStopNestedScroll, onViewAdded, onViewRemoved, recomputeViewAttributes, removeAllViews, removeAllViewsInLayout, removeDetachedView, removeView, removeViewAt, removeViewInLayout, removeViews, removeViewsInLayout, requestChildFocus, requestChildRectangleOnScreen, requestDisallowInterceptTouchEvent, requestFocus, requestSendAccessibilityEvent, requestTransparentRegion, restoreDefaultFocus, scheduleLayoutAnimation, setAddStatesFromChildren, setAlwaysDrawnWithCacheEnabled, setAnimationCacheEnabled, setChildrenDrawingCacheEnabled, setChildrenDrawingOrderEnabled, setChildrenDrawnWithCacheEnabled, setClipChildren, setClipToPadding, setDescendantFocusability, setLayoutAnimation, setLayoutAnimationListener, setLayoutMode, setLayoutTransition, setMotionEventSplittingEnabled, setOnHierarchyChangeListener, setPersistentDrawingCache, setStaticTransformationsEnabled, setTouchscreenBlocksFocus, setTransitionGroup, setWindowInsetsAnimationCallback, showContextMenuForChild, showContextMenuForChild, startActionModeForChild, startActionModeForChild, startLayoutAnimation, startViewTransition, suppressLayout, updateViewLayout
Methods inherited from class android.view.View
addFocusables, addOnAttachStateChangeListener, addOnLayoutChangeListener, addOnUnhandledKeyEventListener, animate, announceForAccessibility, autofill, awakenScrollBars, awakenScrollBars, awakenScrollBars, bringToFront, buildDrawingCache, buildDrawingCache, buildLayer, callOnClick, cancelDragAndDrop, cancelLongPress, cancelPendingInputEvents, canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, canScrollHorizontally, canScrollVertically, clearAnimation, clearViewTranslationCallback, combineMeasuredStates, computeHorizontalScrollExtent, computeHorizontalScrollOffset, computeHorizontalScrollRange, computeScroll, computeSystemWindowInsets, computeVerticalScrollExtent, computeVerticalScrollOffset, computeVerticalScrollRange, createAccessibilityNodeInfo, createContextMenu, destroyDrawingCache, dispatchGenericMotionEvent, dispatchNestedFling, dispatchNestedPreFling, dispatchNestedPrePerformAccessibilityAction, dispatchNestedPreScroll, dispatchNestedScroll, dispatchPopulateAccessibilityEvent, draw, drawableHotspotChanged, findOnBackInvokedDispatcher, findViewById, findViewWithTag, fitSystemWindows, focusSearch, forceHasOverlappingRendering, forceLayout, generateDisplayHash, generateViewId, getAccessibilityDelegate, getAccessibilityLiveRegion, getAccessibilityPaneTitle, getAccessibilityTraversalAfter, getAccessibilityTraversalBefore, getAllowedHandwritingDelegatePackageName, getAllowedHandwritingDelegatorPackageName, getAlpha, getAnimation, getAnimationMatrix, getApplicationWindowToken, getAttributeResolutionStack, getAttributeSourceResourceMap, getAutofillHints, getAutofillId, getAutofillType, getAutofillValue, getBackground, getBackgroundTintBlendMode, getBackgroundTintList, getBackgroundTintMode, getBaseline, getBottom, getBottomFadingEdgeStrength, getBottomPaddingOffset, getCameraDistance, getClipBounds, getClipBounds, getClipToOutline, getContentCaptureSession, getContentDescription, getContext, getContextMenuInfo, getDefaultFocusHighlightEnabled, getDefaultSize, getDisplay, getDrawableState, getDrawingCache, getDrawingCache, getDrawingCacheBackgroundColor, getDrawingCacheQuality, getDrawingRect, getDrawingTime, getElevation, getExplicitStyle, getFilterTouchesWhenObscured, getFitsSystemWindows, getFocusable, getFocusables, getFocusedRect, getForeground, getForegroundGravity, getForegroundTintBlendMode, getForegroundTintList, getForegroundTintMode, getGlobalVisibleRect, getGlobalVisibleRect, getHandler, getHandwritingBoundsOffsetBottom, getHandwritingBoundsOffsetLeft, getHandwritingBoundsOffsetRight, getHandwritingBoundsOffsetTop, getHandwritingDelegatorCallback, getHasOverlappingRendering, getHeight, getHitRect, getHorizontalFadingEdgeLength, getHorizontalScrollbarHeight, getHorizontalScrollbarThumbDrawable, getHorizontalScrollbarTrackDrawable, getId, getImportantForAccessibility, getImportantForAutofill, getImportantForContentCapture, getKeepScreenOn, getKeyDispatcherState, getLabelFor, getLayerType, getLayoutDirection, getLayoutParams, getLeft, getLeftFadingEdgeStrength, getLeftPaddingOffset, getLocalVisibleRect, getLocationInSurface, getLocationInWindow, getLocationOnScreen, getMatrix, getMeasuredHeight, getMeasuredHeightAndState, getMeasuredState, getMeasuredWidth, getMeasuredWidthAndState, getMinimumHeight, getMinimumWidth, getNextClusterForwardId, getNextFocusDownId, getNextFocusForwardId, getNextFocusLeftId, getNextFocusRightId, getNextFocusUpId, getOnFocusChangeListener, getOutlineAmbientShadowColor, getOutlineProvider, getOutlineSpotShadowColor, getOverScrollMode, getPaddingBottom, getPaddingEnd, getPaddingLeft, getPaddingRight, getPaddingStart, getPaddingTop, getParent, getParentForAccessibility, getPivotX, getPivotY, getPointerIcon, getPreferKeepClearRects, getReceiveContentMimeTypes, getResources, getRevealOnFocusHint, getRight, getRightFadingEdgeStrength, getRightPaddingOffset, getRootSurfaceControl, getRootView, getRootWindowInsets, getRotation, getRotationX, getRotationY, getScaleX, getScaleY, getScrollBarDefaultDelayBeforeFade, getScrollBarFadeDuration, getScrollBarSize, getScrollBarStyle, getScrollCaptureHint, getScrollIndicators, getScrollX, getScrollY, getSolidColor, getSourceLayoutResId, getStateDescription, getStateListAnimator, getSuggestedMinimumHeight, getSuggestedMinimumWidth, getSystemGestureExclusionRects, getSystemUiVisibility, getTag, getTag, getTextAlignment, getTextDirection, getTooltipText, getTop, getTopFadingEdgeStrength, getTopPaddingOffset, getTouchables, getTouchDelegate, getTransitionAlpha, getTransitionName, getTranslationX, getTranslationY, getTranslationZ, getUniqueDrawingId, getVerticalFadingEdgeLength, getVerticalScrollbarPosition, getVerticalScrollbarThumbDrawable, getVerticalScrollbarTrackDrawable, getVerticalScrollbarWidth, getViewTranslationResponse, getViewTreeObserver, getVisibility, getWidth, getWindowAttachCount, getWindowId, getWindowInsetsController, getWindowSystemUiVisibility, getWindowToken, getWindowVisibility, getWindowVisibleDisplayFrame, getX, getY, getZ, hasExplicitFocusable, hasFocusable, hasNestedScrollingParent, hasOnClickListeners, hasOnLongClickListeners, hasOverlappingRendering, hasPointerCapture, hasWindowFocus, inflate, invalidate, invalidate, invalidate, invalidateDrawable, invalidateOutline, isAccessibilityDataSensitive, isAccessibilityFocused, isAccessibilityHeading, isActivated, isAttachedToWindow, isAutoHandwritingEnabled, isClickable, isContextClickable, isCredential, isDirty, isDrawingCacheEnabled, isDuplicateParentStateEnabled, isEnabled, isFocusable, isFocusableInTouchMode, isFocused, isFocusedByDefault, isForceDarkAllowed, isHandwritingDelegate, isHapticFeedbackEnabled, isHardwareAccelerated, isHorizontalFadingEdgeEnabled, isHorizontalScrollBarEnabled, isHovered, isImportantForAccessibility, isImportantForAutofill, isImportantForContentCapture, isInEditMode, isInLayout, isInTouchMode, isKeyboardNavigationCluster, isLaidOut, isLayoutDirectionResolved, isLayoutRequested, isLongClickable, isNestedScrollingEnabled, isOpaque, isPaddingOffsetRequired, isPaddingRelative, isPivotSet, isPreferKeepClear, isPressed, isSaveEnabled, isSaveFromParentEnabled, isScreenReaderFocusable, isScrollbarFadingEnabled, isScrollContainer, isSelected, isShowingLayoutBounds, isShown, isSoundEffectsEnabled, isTemporarilyDetached, isTextAlignmentResolved, isTextDirectionResolved, isVerticalFadingEdgeEnabled, isVerticalScrollBarEnabled, isVisibleToUserForAutofill, keyboardNavigationClusterSearch, measure, mergeDrawableStates, offsetLeftAndRight, offsetTopAndBottom, onAnimationEnd, onAnimationStart, onCancelPendingInputEvents, onCapturedPointerEvent, onCheckIsTextEditor, onCreateContextMenu, onCreateViewTranslationRequest, onCreateVirtualViewTranslationRequests, onDisplayHint, onDragEvent, onDraw, onDrawForeground, onDrawScrollBars, onFilterTouchEventForSecurity, onFinishInflate, onFinishTemporaryDetach, onFocusChanged, onHoverChanged, onInitializeAccessibilityEvent, onInitializeAccessibilityNodeInfo, onKeyDown, onKeyLongPress, onKeyMultiple, onKeyPreIme, onKeyShortcut, onKeyUp, onOverScrolled, onPointerCaptureChange, onPopulateAccessibilityEvent, onProvideAutofillStructure, onProvideContentCaptureStructure, onProvideStructure, onProvideVirtualStructure, onReceiveContent, onRestoreInstanceState, onRtlPropertiesChanged, onSaveInstanceState, onScreenStateChanged, onScrollCaptureSearch, onScrollChanged, onSetAlpha, onStartTemporaryDetach, onTrackballEvent, onViewTranslationResponse, onVirtualViewTranslationResponses, onVisibilityAggregated, onVisibilityChanged, onWindowFocusChanged, onWindowSystemUiVisibilityChanged, onWindowVisibilityChanged, overScrollBy, performAccessibilityAction, performClick, performContextClick, performContextClick, performHapticFeedback, performHapticFeedback, performLongClick, performLongClick, performReceiveContent, playSoundEffect, post, postDelayed, postInvalidate, postInvalidate, postInvalidateDelayed, postInvalidateDelayed, postInvalidateOnAnimation, postInvalidateOnAnimation, postOnAnimation, postOnAnimationDelayed, refreshDrawableState, releasePointerCapture, removeCallbacks, removeOnAttachStateChangeListener, removeOnLayoutChangeListener, removeOnUnhandledKeyEventListener, requestApplyInsets, requestFitSystemWindows, requestFocus, requestFocus, requestFocusFromTouch, requestLayout, requestPointerCapture, requestRectangleOnScreen, requestRectangleOnScreen, requestUnbufferedDispatch, requestUnbufferedDispatch, requireViewById, resetPivot, resolveSize, resolveSizeAndState, restoreHierarchyState, saveAttributeDataForStyleable, saveHierarchyState, scheduleDrawable, scrollBy, scrollTo, sendAccessibilityEvent, sendAccessibilityEventUnchecked, setAccessibilityDataSensitive, setAccessibilityDelegate, setAccessibilityHeading, setAccessibilityLiveRegion, setAccessibilityPaneTitle, setAccessibilityTraversalAfter, setAccessibilityTraversalBefore, setActivated, setAllowClickWhenDisabled, setAllowedHandwritingDelegatePackage, setAllowedHandwritingDelegatorPackage, setAlpha, setAnimation, setAnimationMatrix, setAutofillHints, setAutofillId, setAutoHandwritingEnabled, setBackground, setBackgroundColor, setBackgroundDrawable, setBackgroundResource, setBackgroundTintBlendMode, setBackgroundTintList, setBackgroundTintMode, setBottom, setCameraDistance, setClickable, setClipBounds, setClipToOutline, setContentCaptureSession, setContentDescription, setContextClickable, setDefaultFocusHighlightEnabled, setDrawingCacheBackgroundColor, setDrawingCacheEnabled, setDrawingCacheQuality, setDuplicateParentStateEnabled, setElevation, setEnabled, setFadingEdgeLength, setFilterTouchesWhenObscured, setFitsSystemWindows, setFocusable, setFocusable, setFocusableInTouchMode, setFocusedByDefault, setForceDarkAllowed, setForeground, setForegroundTintBlendMode, setForegroundTintList, setForegroundTintMode, setHandwritingBoundsOffsets, setHandwritingDelegatorCallback, setHapticFeedbackEnabled, setHasTransientState, setHorizontalFadingEdgeEnabled, setHorizontalScrollBarEnabled, setHorizontalScrollbarThumbDrawable, setHorizontalScrollbarTrackDrawable, setHovered, setId, setImportantForAccessibility, setImportantForAutofill, setImportantForContentCapture, setIsCredential, setIsHandwritingDelegate, setKeepScreenOn, setKeyboardNavigationCluster, setLabelFor, setLayerPaint, setLayerType, setLayoutDirection, setLayoutParams, setLeft, setLeftTopRightBottom, setLongClickable, setMeasuredDimension, setMinimumHeight, setMinimumWidth, setNestedScrollingEnabled, setNextClusterForwardId, setNextFocusDownId, setNextFocusForwardId, setNextFocusLeftId, setNextFocusRightId, setNextFocusUpId, setOnApplyWindowInsetsListener, setOnCapturedPointerListener, setOnClickListener, setOnContextClickListener, setOnCreateContextMenuListener, setOnDragListener, setOnFocusChangeListener, setOnGenericMotionListener, setOnHoverListener, setOnKeyListener, setOnLongClickListener, setOnReceiveContentListener, setOnScrollChangeListener, setOnSystemUiVisibilityChangeListener, setOnTouchListener, setOutlineAmbientShadowColor, setOutlineProvider, setOutlineSpotShadowColor, setOverScrollMode, setPadding, setPaddingRelative, setPivotX, setPivotY, setPointerIcon, setPreferKeepClear, setPreferKeepClearRects, setPressed, setRenderEffect, setRevealOnFocusHint, setRight, setRotation, setRotationX, setRotationY, setSaveEnabled, setSaveFromParentEnabled, setScaleX, setScaleY, setScreenReaderFocusable, setScrollBarDefaultDelayBeforeFade, setScrollBarFadeDuration, setScrollbarFadingEnabled, setScrollBarSize, setScrollBarStyle, setScrollCaptureCallback, setScrollCaptureHint, setScrollContainer, setScrollIndicators, setScrollIndicators, setScrollX, setScrollY, setSelected, setSoundEffectsEnabled, setStateDescription, setStateListAnimator, setSystemGestureExclusionRects, setSystemUiVisibility, setTag, setTag, setTextAlignment, setTextDirection, setTooltipText, setTop, setTouchDelegate, setTransitionAlpha, setTransitionName, setTransitionVisibility, setTranslationX, setTranslationY, setTranslationZ, setVerticalFadingEdgeEnabled, setVerticalScrollBarEnabled, setVerticalScrollbarPosition, setVerticalScrollbarThumbDrawable, setVerticalScrollbarTrackDrawable, setViewTranslationCallback, setWillNotCacheDrawing, setWillNotDraw, setX, setY, setZ, showContextMenu, showContextMenu, startActionMode, startActionMode, startAnimation, startDrag, startDragAndDrop, startNestedScroll, stopNestedScroll, toString, transformMatrixToGlobal, transformMatrixToLocal, unscheduleDrawable, unscheduleDrawable, updateDragShadow, verifyDrawable, willNotCacheDrawing, willNotDraw
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.flutter.plugin.mouse.MouseCursorPlugin.MouseCursorViewDelegate
setPointerIcon
Methods inherited from interface android.view.ViewParent
canResolveLayoutDirection, canResolveTextAlignment, canResolveTextDirection, createContextMenu, getLayoutDirection, getParent, getParentForAccessibility, getTextAlignment, getTextDirection, isLayoutDirectionResolved, isLayoutRequested, isTextAlignmentResolved, isTextDirectionResolved, keyboardNavigationClusterSearch, requestFitSystemWindows, requestLayout
-
Constructor Details
-
FlutterView
Constructs aFlutterView
programmatically, without any XML attributes.- A
FlutterSurfaceView
is used to render the Flutter UI. transparencyMode
defaults toTransparencyMode.opaque
.
FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. - A
-
FlutterView
Deprecated.Deprecated - useFlutterView(Context, FlutterSurfaceView)
orFlutterView(Context, FlutterTextureView)
orFlutterView(Context, FlutterImageView)
instead. -
FlutterView
@Deprecated public FlutterView(@NonNull Context context, @NonNull TransparencyMode transparencyMode) Deprecated.Deprecated - useFlutterView(Context, FlutterSurfaceView)
orFlutterView(Context, FlutterTextureView)
instead, and configure the incomingFlutterSurfaceView
orFlutterTextureView
for transparency as desired.Constructs a
FlutterView
programmatically, without any XML attributes, uses aFlutterSurfaceView
to render the Flutter UI, and allows selection of atransparencyMode
.FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. -
FlutterView
Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterSurfaceView
to render the Flutter UI, and allows selection of atransparencyMode
.FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. -
FlutterView
Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterTextureView
to render the Flutter UI, and allows selection of atransparencyMode
.FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. -
FlutterView
Constructs aFlutterView
programmatically, without any XML attributes, uses the givenFlutterImageView
to render the Flutter UI.FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. -
FlutterView
Constructs aFlutterView
in an XML-inflation-compliant manner.FlutterView
requires anActivity
instead of a genericContext
to be compatible withPlatformViewsController
. -
FlutterView
@Deprecated public FlutterView(@NonNull Context context, @NonNull RenderMode renderMode, @NonNull TransparencyMode transparencyMode) Deprecated.Deprecated - useFlutterView(Context, FlutterSurfaceView)
orFlutterView(Context, FlutterTextureView)
instead, and configure the incomingFlutterSurfaceView
orFlutterTextureView
for transparency as desired.
-
-
Method Details
-
hasRenderedFirstFrame
public boolean hasRenderedFirstFrame()Returns true if an attachedFlutterEngine
has rendered at least 1 frame to thisFlutterView
.Returns false if no
FlutterEngine
is attached.This flag is specific to a given
FlutterEngine
. The following hypothetical timeline demonstrates how this flag changes over time.flutterEngineA
is attached to thisFlutterView
: returns falseflutterEngineA
renders its first frame to thisFlutterView
: returns trueflutterEngineA
is detached from thisFlutterView
: returns falseflutterEngineB
is attached to thisFlutterView
: returns falseflutterEngineB
renders its first frame to thisFlutterView
: returns true
-
addOnFirstFrameRenderedListener
Adds the givenlistener
to thisFlutterView
, to be notified upon Flutter's first rendered frame. -
removeOnFirstFrameRenderedListener
Removes the givenlistener
, which was previously added withaddOnFirstFrameRenderedListener(FlutterUiDisplayListener)
. -
onConfigurationChanged
Sends relevant configuration data from Android to Flutter when the AndroidConfiguration
changes.The Android
Configuration
might change as a result of device orientation change, device language change, device text scale factor change, etc.- Overrides:
onConfigurationChanged
in classView
-
onSizeChanged
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) Invoked when thisFlutterView
changes size, including upon initial measure.The initial measure reports an
oldWidth
andoldHeight
of zero.Flutter cares about the width and height of the view that displays it on the host platform. Therefore, when this method is invoked, the new width and height are communicated to Flutter as the "physical size" of the view that displays Flutter's UI.
- Overrides:
onSizeChanged
in classView
-
createWindowInfoRepo
-
onAttachedToWindow
protected void onAttachedToWindow()Invoked when this is attached to the window.We register for
WindowInfoTracker
updates.- Overrides:
onAttachedToWindow
in classViewGroup
-
onDetachedFromWindow
protected void onDetachedFromWindow()Invoked when this is detached from the window.We unregister from
WindowInfoTracker
updates.- Overrides:
onDetachedFromWindow
in classViewGroup
-
setWindowInfoListenerDisplayFeatures
protected void setWindowInfoListenerDisplayFeatures(androidx.window.layout.WindowLayoutInfo layoutInfo) RefreshWindowInfoTracker
andDisplayCutout
display features. Fold, hinge and cutout areas are populated here. -
onApplyWindowInsets
Invoked when Android's desired window insets change, i.e., padding.Flutter does not use a standard
View
hierarchy and therefore Flutter is unaware of these insets. Therefore, this method calculates the viewport metrics that Flutter should use and then sends those metrics to Flutter.This callback is not present in API < 20, which means lower API devices will see the wider than expected padding when the status and navigation bars are hidden.
- Overrides:
onApplyWindowInsets
in classView
-
onCreateInputConnection
Creates anInputConnection
to work with aInputMethodManager
.Any
View
that can take focus or process text input must implement this method by returning a non-nullInputConnection
. Flutter may render one or many focusable and text-input widgets, thereforeFlutterView
must support anInputConnection
.The
InputConnection
returned from this method comes from aTextInputPlugin
, which is owned by thisFlutterView
. ATextInputPlugin
exists to encapsulate the nuances of input communication, rather than spread that logic throughout thisFlutterView
.- Overrides:
onCreateInputConnection
in classView
-
checkInputConnectionProxy
Allows aView
that is not currently the input connection target to invoke commands on theInputMethodManager
, which is otherwise disallowed.Returns true to allow non-input-connection-targets to invoke methods on
InputMethodManager
, or false to exclusively allow the input connection target to invoke such methods.- Overrides:
checkInputConnectionProxy
in classView
-
dispatchKeyEvent
Invoked when a hardware key is pressed or released.This method is typically invoked in response to the press of a physical keyboard key or a D-pad button. It is generally not invoked when a virtual software keyboard is used, though a software keyboard may choose to invoke this method in some situations.
KeyEvent
s are sent from Android to Flutter.KeyboardManager
may do some additional work with the givenKeyEvent
, e.g., combine thiskeyCode
with the previouskeyCode
to generate a unicode combined character.- Overrides:
dispatchKeyEvent
in classViewGroup
-
onTouchEvent
Invoked by Android when a user touch event occurs.Flutter handles all of its own gesture detection and processing, therefore this method forwards all
MotionEvent
data from Android to Flutter.- Overrides:
onTouchEvent
in classView
-
onGenericMotionEvent
Invoked by Android when a generic motion event occurs, e.g., joystick movement, mouse hover, track pad touches, scroll wheel movements, etc.Flutter handles all of its own gesture detection and processing, therefore this method forwards all
MotionEvent
data from Android to Flutter.- Overrides:
onGenericMotionEvent
in classView
-
onHoverEvent
Invoked by Android when a hover-compliant input system causes a hover event.An example of hover events is a stylus sitting near an Android screen. As the stylus moves from outside a
View
to hover over aView
, or move around within aView
, or moves from over aView
to outside aView
, a correspondingMotionEvent
is reported via this method.Hover events can be used for accessibility touch exploration and therefore are processed here for accessibility purposes.
- Overrides:
onHoverEvent
in classView
-
getAccessibilityNodeProvider
- Overrides:
getAccessibilityNodeProvider
in classView
-
findViewByAccessibilityIdTraversal
Prior to Android Q, it's impossible to add real views as descendants of virtual nodes. This breaks accessibility when an Android view is embedded in a Flutter app.This method overrides a hidden method in
ViewGroup
to workaround this limitation. This solution is derivated from Jetpack Compose, and can be found in the Android source code as well.This workaround finds the descendant
View
that matches the provided accessibility id.- Parameters:
accessibilityId
- The view accessibility id.- Returns:
- The view matching the accessibility id if any.
-
getSystemPointerIcon
Description copied from interface:io.flutter.plugin.mouse.MouseCursorPlugin.MouseCursorViewDelegate
Gets a system pointer icon object for the giventype
.If typeis not recognized, returns the default pointer icon.
This is typically implemented by calling
PointerIcon.getSystemIcon(android.content.Context, int)
with the context associated with this view.- Specified by:
getSystemPointerIcon
in interfaceio.flutter.plugin.mouse.MouseCursorPlugin.MouseCursorViewDelegate
-
getBinaryMessenger
Description copied from interface:KeyboardManager.ViewDelegate
Returns aBinaryMessenger
to send platform messages with.- Specified by:
getBinaryMessenger
in interfaceKeyboardManager.ViewDelegate
-
onTextInputKeyEvent
Description copied from interface:KeyboardManager.ViewDelegate
Send aKeyEvent
that is not handled by the keyboard responders to the text input system.- Specified by:
onTextInputKeyEvent
in interfaceKeyboardManager.ViewDelegate
- Parameters:
keyEvent
- theKeyEvent
that should be processed by the text input system. It must not be null.- Returns:
- Whether the text input handles the key event.
-
redispatch
Description copied from interface:KeyboardManager.ViewDelegate
Send aKeyEvent
that is not handled by Flutter back to the platform.- Specified by:
redispatch
in interfaceKeyboardManager.ViewDelegate
-
attachToFlutterEngine
Connects thisFlutterView
to the givenFlutterEngine
.This
FlutterView
will begin rendering the UI painted by the givenFlutterEngine
. ThisFlutterView
will also begin forwarding interaction events from thisFlutterView
to the givenFlutterEngine
, e.g., user touch events, accessibility events, keyboard events, and others.See
detachFromFlutterEngine()
for information on how to detach from aFlutterEngine
. -
detachFromFlutterEngine
public void detachFromFlutterEngine()Disconnects thisFlutterView
from a previously attachedFlutterEngine
.This
FlutterView
will clear its UI and stop forwarding all events to the previously-attachedFlutterEngine
. This includes touch events, accessibility events, keyboard events, and others.See
attachToFlutterEngine(FlutterEngine)
for information on how to attach aFlutterEngine
. -
createImageView
-
getCurrentImageSurface
-
convertToImageView
public void convertToImageView()Converts the current render surface to aFlutterImageView
if it's not one already. Otherwise, it resizes theFlutterImageView
based on the current view size. -
revertImageView
If the surface is rendered by aFlutterImageView
, then calling this method will stop rendering to aFlutterImageView
, and render on the previous surface instead.- Parameters:
onDone
- a callback called when Flutter UI is rendered on the previous surface. Use this callback to perform cleanups. For example, destroy overlay surfaces.
-
attachOverlaySurfaceToRender
-
acquireLatestImageViewFrame
public boolean acquireLatestImageViewFrame() -
isAttachedToFlutterEngine
@VisibleForTesting public boolean isAttachedToFlutterEngine()Returns true if thisFlutterView
is currently attached to aFlutterEngine
. -
getAttachedFlutterEngine
Returns theFlutterEngine
to which thisFlutterView
is currently attached, or null if thisFlutterView
is not currently attached to aFlutterEngine
. -
addFlutterEngineAttachmentListener
@VisibleForTesting public void addFlutterEngineAttachmentListener(@NonNull FlutterView.FlutterEngineAttachmentListener listener) Adds aFlutterView.FlutterEngineAttachmentListener
, which is notified whenever thisFlutterView
attached to/detaches from aFlutterEngine
. -
removeFlutterEngineAttachmentListener
@VisibleForTesting public void removeFlutterEngineAttachmentListener(@NonNull FlutterView.FlutterEngineAttachmentListener listener) Removes aFlutterView.FlutterEngineAttachmentListener
that was previously added withaddFlutterEngineAttachmentListener(FlutterEngineAttachmentListener)
. -
onProvideAutofillVirtualStructure
- Overrides:
onProvideAutofillVirtualStructure
in classView
-
autofill
-
setVisibility
public void setVisibility(int visibility) - Overrides:
setVisibility
in classView
-