public class FlutterEngine extends Object
FlutterEngine
can execute in the background, or it can be rendered to the screen by
using the accompanying FlutterRenderer
. Rendering can be started and stopped, thus
allowing a FlutterEngine
to move from UI interaction to data-only processing and then
back to UI interaction.
Multiple FlutterEngine
s may exist, execute Dart code, and render UIs within a single
Android app.
To start running Flutter within this FlutterEngine
, get a reference to this engine's
DartExecutor
and then use DartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint)
.
The DartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint)
method must not be
invoked twice on the same FlutterEngine
.
To start rendering Flutter content to the screen, use getRenderer()
to obtain a
FlutterRenderer
and then attach a FlutterRenderer.RenderSurface
. Consider using
a FlutterView
as a FlutterRenderer.RenderSurface
.Modifier and Type | Class and Description |
---|---|
static interface |
FlutterEngine.EngineLifecycleListener
Lifecycle callbacks for Flutter engine lifecycle events.
|
Constructor and Description |
---|
FlutterEngine(Context context)
Constructs a new
FlutterEngine . |
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Cleans up all components within this
FlutterEngine and then detaches from Flutter's
native implementation. |
void |
detachFromJni()
Detaches this
FlutterEngine from Flutter's native implementation, but allows
reattachment later. |
AccessibilityChannel |
getAccessibilityChannel()
System channel that sends accessibility requests and events from Flutter to Android.
|
DartExecutor |
getDartExecutor()
The Dart execution context associated with this
FlutterEngine . |
KeyEventChannel |
getKeyEventChannel()
System channel that sends key events from Android to Flutter.
|
LifecycleChannel |
getLifecycleChannel()
System channel that sends Android lifecycle events to Flutter.
|
LocalizationChannel |
getLocalizationChannel()
System channel that sends locale data from Android to Flutter.
|
NavigationChannel |
getNavigationChannel()
System channel that sends Flutter navigation commands from Android to Flutter.
|
PlatformChannel |
getPlatformChannel()
System channel that sends platform-oriented requests and information to Flutter,
e.g., requests to play sounds, requests for haptics, system chrome settings, etc.
|
FlutterPluginRegistry |
getPluginRegistry() |
FlutterRenderer |
getRenderer()
The rendering system associated with this
FlutterEngine . |
SettingsChannel |
getSettingsChannel()
System channel that sends platform/user settings from Android to Flutter, e.g.,
time format, scale factor, etc.
|
SystemChannel |
getSystemChannel()
System channel that sends memory pressure warnings from Android to Flutter.
|
TextInputChannel |
getTextInputChannel()
System channel that sends and receives text input requests and state.
|
public FlutterEngine(@NonNull Context context)
FlutterEngine
.
A new FlutterEngine
does not execute any Dart code automatically. See
getDartExecutor()
and DartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint)
to begin executing Dart code within this FlutterEngine
.
A new FlutterEngine
will not display any UI until a
FlutterRenderer.RenderSurface
is registered. See
getRenderer()
and FlutterRenderer.attachToRenderSurface(FlutterRenderer.RenderSurface)
.
A new FlutterEngine
does not come with any Flutter plugins attached. To attach plugins,
see getPluginRegistry()
.
A new FlutterEngine
does come with all default system channels attached.public void detachFromJni()
FlutterEngine
from Flutter's native implementation, but allows
reattachment later.
// TODO(mattcarroll): document use-cases for this behavior.public void destroy()
FlutterEngine
and then detaches from Flutter's
native implementation.
This FlutterEngine
instance should be discarded after invoking this method.@NonNull public DartExecutor getDartExecutor()
FlutterEngine
.
The DartExecutor
can be used to start executing Dart code from a given entrypoint.
See DartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint)
.
Use the DartExecutor
to connect any desired message channels and method channels
to facilitate communication between Android and Dart/Flutter.@NonNull public FlutterRenderer getRenderer()
FlutterEngine
.
To render a Flutter UI that is produced by this FlutterEngine
's Dart code, attach
a FlutterRenderer.RenderSurface
to this
FlutterRenderer
.@NonNull public AccessibilityChannel getAccessibilityChannel()
@NonNull public KeyEventChannel getKeyEventChannel()
@NonNull public LifecycleChannel getLifecycleChannel()
@NonNull public LocalizationChannel getLocalizationChannel()
@NonNull public NavigationChannel getNavigationChannel()
@NonNull public PlatformChannel getPlatformChannel()
@NonNull public SettingsChannel getSettingsChannel()
@NonNull public SystemChannel getSystemChannel()
@NonNull public TextInputChannel getTextInputChannel()
@NonNull public FlutterPluginRegistry getPluginRegistry()