Package io.flutter.embedding.engine.renderer

# Interface RenderSurface

All Known Implementing Classes:
  `FlutterImageView`, `FlutterSurfaceView`, `FlutterTextureView`, `PlatformOverlayView`

public interface RenderSurface
Owns a `Surface` that `FlutterRenderer` would like to paint.

`RenderSurface` is responsible for providing a `Surface` to a given `FlutterRenderer` when requested, and then notify that `FlutterRenderer` when the `Surface` changes, or is destroyed.

The behavior of providing a `Surface` is delegated to this interface because the timing of a `Surface`'s availability is determined by Android. Therefore, an accessor method would not fulfill the requirements. Therefore, a `RenderSurface` is given a `FlutterRenderer`, which the `RenderSurface` is expected to notify as a `Surface` becomes available, changes, or is destroyed.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `attachToRenderer(FlutterRenderer renderer)`
  Instructs this `RenderSurface` to give its `Surface` to the given `FlutterRenderer` so that Flutter can paint pixels on it.
  `void`
  `detachFromRenderer()`
  Instructs this `RenderSurface` to stop forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.
  `FlutterRenderer`
  `getAttachedRenderer()`
  Returns the `FlutterRenderer` that is attached to this `RenderSurface`, or null if no `FlutterRenderer` is currently attached.
  `void`
  `pause()`
  Instructs this `RenderSurface` to stop forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.
  `void`
  `resume()`
  Instructs this `RenderSurface` to resume forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.

- ## Method Details

  - ### getAttachedRenderer

    @Nullable FlutterRenderer getAttachedRenderer()
    Returns the `FlutterRenderer` that is attached to this `RenderSurface`, or null if no `FlutterRenderer` is currently attached.

  - ### attachToRenderer

    void attachToRenderer(@NonNull FlutterRenderer renderer)
    Instructs this `RenderSurface` to give its `Surface` to the given `FlutterRenderer` so that Flutter can paint pixels on it.

    After this call, `RenderSurface` is expected to invoke the following methods on `FlutterRenderer` at the appropriate times:

    1. `FlutterRenderer.startRenderingToSurface(Surface, boolean)`
    2. `FlutterRenderer.surfaceChanged(int, int)`}
    3. `FlutterRenderer.stopRenderingToSurface()`

  - ### detachFromRenderer

    void detachFromRenderer()
    Instructs this `RenderSurface` to stop forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.

    This `RenderSurface` should also clean up any references related to the previously connected `FlutterRenderer`.

  - ### pause

    void pause()
    Instructs this `RenderSurface` to stop forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.

  - ### resume

    void resume()
    Instructs this `RenderSurface` to resume forwarding `Surface` notifications to the `FlutterRenderer` that was previously connected with `attachToRenderer(FlutterRenderer)`.