Class FlutterFragment.NewEngineFragmentBuilder
- java.lang.Object
-
- io.flutter.embedding.android.FlutterFragment.NewEngineFragmentBuilder
-
- Enclosing class:
- FlutterFragment
public static class FlutterFragment.NewEngineFragmentBuilder extends Object
Builder that creates a newFlutterFragment
witharguments
that correspond to the values set on thisNewEngineFragmentBuilder
.To create a
FlutterFragment
with defaultarguments
, invokeFlutterFragment.createDefault()
.Subclasses of
FlutterFragment
that do not introduce any new arguments can use thisNewEngineFragmentBuilder
to construct instances of the subclass without subclassing thisNewEngineFragmentBuilder
.MyFlutterFragment f = new FlutterFragment.NewEngineFragmentBuilder(MyFlutterFragment.class) .someProperty(...) .someOtherProperty(...) .build<MyFlutterFragment>();
Subclasses of
FlutterFragment
that introduce new arguments should subclass thisNewEngineFragmentBuilder
to add the new properties:- Ensure the
FlutterFragment
subclass has a no-arg constructor. - Subclass this
NewEngineFragmentBuilder
. - Override the new
NewEngineFragmentBuilder
's no-arg constructor and invoke the super constructor to set theFlutterFragment
subclass:public MyBuilder() { super(MyFlutterFragment.class); }
- Add appropriate property methods for the new properties.
- Override
createArgs()
, call through to the super method, then add the new properties as arguments in theBundle
.
NewEngineFragmentBuilder
subclass is defined, theFlutterFragment
subclass can be instantiated as follows.MyFlutterFragment f = new MyBuilder() .someExistingProperty(...) .someNewProperty(...) .build<MyFlutterFragment>();
-
-
Constructor Summary
Constructors Constructor Description NewEngineFragmentBuilder()
Constructs aNewEngineFragmentBuilder
that is configured to construct an instance ofFlutterFragment
.NewEngineFragmentBuilder(Class<? extends FlutterFragment> subclass)
Constructs aNewEngineFragmentBuilder
that is configured to construct an instance ofsubclass
, which extendsFlutterFragment
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FlutterFragment.NewEngineFragmentBuilder
appBundlePath(String appBundlePath)
The path to the app bundle which contains the Dart app to execute.<T extends FlutterFragment>
Tbuild()
Constructs a newFlutterFragment
(or a subclass) that is configured based on properties set on thisBuilder
.protected Bundle
createArgs()
Creates aBundle
of arguments that are assigned to the newFlutterFragment
.FlutterFragment.NewEngineFragmentBuilder
dartEntrypoint(String dartEntrypoint)
The name of the initial Dart method to invoke, defaults to "main".FlutterFragment.NewEngineFragmentBuilder
dartEntrypointArgs(List<String> dartEntrypointArgs)
Arguments passed as a list of string to Dart's entrypoint function.FlutterFragment.NewEngineFragmentBuilder
dartLibraryUri(String dartLibraryUri)
FlutterFragment.NewEngineFragmentBuilder
flutterShellArgs(FlutterShellArgs shellArgs)
Any special configuration arguments for the Flutter engineFlutterFragment.NewEngineFragmentBuilder
handleDeeplinking(Boolean handleDeeplinking)
Whether to handle the deeplinking from theIntent
automatically if thegetInitialRoute
returns null.FlutterFragment.NewEngineFragmentBuilder
initialRoute(String initialRoute)
The initial route that a Flutter app will render in thisFlutterFragment
, defaults to "/".FlutterFragment.NewEngineFragmentBuilder
renderMode(RenderMode renderMode)
Render Flutter either as aRenderMode.surface
or aRenderMode.texture
.FlutterFragment.NewEngineFragmentBuilder
shouldAttachEngineToActivity(boolean shouldAttachEngineToActivity)
Whether or not thisFlutterFragment
should automatically attach itsActivity
as a control surface for itsFlutterEngine
.FlutterFragment.NewEngineFragmentBuilder
shouldAutomaticallyHandleOnBackPressed(boolean shouldAutomaticallyHandleOnBackPressed)
Whether or not thisFlutterFragment
should automatically receiveFlutterFragment.onBackPressed()
events, rather than requiring an explicit activity call through.FlutterFragment.NewEngineFragmentBuilder
shouldDelayFirstAndroidViewDraw(boolean shouldDelayFirstAndroidViewDraw)
Whether to delay the Android drawing pass till after the Flutter UI has been displayed.FlutterFragment.NewEngineFragmentBuilder
transparencyMode(TransparencyMode transparencyMode)
Support aTransparencyMode.transparent
background withinFlutterView
, or force anTransparencyMode.opaque
background.
-
-
-
Constructor Detail
-
NewEngineFragmentBuilder
public NewEngineFragmentBuilder()
Constructs aNewEngineFragmentBuilder
that is configured to construct an instance ofFlutterFragment
.
-
NewEngineFragmentBuilder
public NewEngineFragmentBuilder(@NonNull Class<? extends FlutterFragment> subclass)
Constructs aNewEngineFragmentBuilder
that is configured to construct an instance ofsubclass
, which extendsFlutterFragment
.
-
-
Method Detail
-
dartEntrypoint
@NonNull public FlutterFragment.NewEngineFragmentBuilder dartEntrypoint(@NonNull String dartEntrypoint)
The name of the initial Dart method to invoke, defaults to "main".
-
dartLibraryUri
@NonNull public FlutterFragment.NewEngineFragmentBuilder dartLibraryUri(@NonNull String dartLibraryUri)
-
dartEntrypointArgs
@NonNull public FlutterFragment.NewEngineFragmentBuilder dartEntrypointArgs(@NonNull List<String> dartEntrypointArgs)
Arguments passed as a list of string to Dart's entrypoint function.
-
initialRoute
@NonNull public FlutterFragment.NewEngineFragmentBuilder initialRoute(@NonNull String initialRoute)
The initial route that a Flutter app will render in thisFlutterFragment
, defaults to "/".
-
handleDeeplinking
@NonNull public FlutterFragment.NewEngineFragmentBuilder handleDeeplinking(@NonNull Boolean handleDeeplinking)
Whether to handle the deeplinking from theIntent
automatically if thegetInitialRoute
returns null.
-
appBundlePath
@NonNull public FlutterFragment.NewEngineFragmentBuilder appBundlePath(@NonNull String appBundlePath)
The path to the app bundle which contains the Dart app to execute. Null when unspecified, which defaults toFlutterLoader.findAppBundlePath()
-
flutterShellArgs
@NonNull public FlutterFragment.NewEngineFragmentBuilder flutterShellArgs(@NonNull FlutterShellArgs shellArgs)
Any special configuration arguments for the Flutter engine
-
renderMode
@NonNull public FlutterFragment.NewEngineFragmentBuilder renderMode(@NonNull RenderMode renderMode)
Render Flutter either as aRenderMode.surface
or aRenderMode.texture
. You should usesurface
unless you have a specific reason to usetexture
.texture
comes with a significant performance impact, buttexture
can be displayed beneath other AndroidView
s and animated, whereassurface
cannot.
-
transparencyMode
@NonNull public FlutterFragment.NewEngineFragmentBuilder transparencyMode(@NonNull TransparencyMode transparencyMode)
Support aTransparencyMode.transparent
background withinFlutterView
, or force anTransparencyMode.opaque
background.See
TransparencyMode
for implications of this selection.
-
shouldAttachEngineToActivity
@NonNull public FlutterFragment.NewEngineFragmentBuilder shouldAttachEngineToActivity(boolean shouldAttachEngineToActivity)
Whether or not thisFlutterFragment
should automatically attach itsActivity
as a control surface for itsFlutterEngine
.Control surfaces are used to provide Android resources and lifecycle events to plugins that are attached to the
FlutterEngine
. IfshouldAttachEngineToActivity
is true then thisFlutterFragment
will connect itsFlutterEngine
to the surroundingActivity
, along with any plugins that are registered with thatFlutterEngine
. This allows plugins to access theActivity
, as well as receiveActivity
-specific calls, e.g.,Activity.onNewIntent(Intent)
. IfshouldAttachEngineToActivity
is false, then thisFlutterFragment
will not automatically manage the connection between itsFlutterEngine
and the surroundingActivity
. TheActivity
will need to be manually connected to thisFlutterFragment
'sFlutterEngine
by the app developer. SeeFlutterEngine.getActivityControlSurface()
.One reason that a developer might choose to manually manage the relationship between the
Activity
andFlutterEngine
is if the developer wants to move theFlutterEngine
somewhere else. For example, a developer might want theFlutterEngine
to outlive the surroundingActivity
so that it can be used later in a differentActivity
. To accomplish this, theFlutterEngine
will need to be disconnected from the surroundingActivity
at an unusual time, preventing thisFlutterFragment
from correctly managing the relationship between theFlutterEngine
and the surroundingActivity
.Another reason that a developer might choose to manually manage the relationship between the
Activity
andFlutterEngine
is if the developer wants to prevent, or explicitly control when theFlutterEngine
's plugins have access to the surroundingActivity
. For example, imagine that thisFlutterFragment
only takes up part of the screen and the app developer wants to ensure that none of the Flutter plugins are able to manipulate the surroundingActivity
. In this case, the developer would not want theFlutterEngine
to have access to theActivity
, which can be accomplished by settingshouldAttachEngineToActivity
tofalse
.
-
shouldAutomaticallyHandleOnBackPressed
@NonNull public FlutterFragment.NewEngineFragmentBuilder shouldAutomaticallyHandleOnBackPressed(boolean shouldAutomaticallyHandleOnBackPressed)
Whether or not thisFlutterFragment
should automatically receiveFlutterFragment.onBackPressed()
events, rather than requiring an explicit activity call through. Disabled by default.When enabled, the activity will automatically dispatch back-press events to the fragment's
OnBackPressedCallback
, instead of requiring the activity to manually callFlutterFragment.onBackPressed()
in client code. If enabled, do not invokeFlutterFragment.onBackPressed()
manually.This behavior relies on the implementation of
FlutterFragment.popSystemNavigator()
. It's not recommended to override that method when enabling this attribute, but if you do, you should always fall back to callingsuper.popSystemNavigator()
when not relying on custom behavior.
-
shouldDelayFirstAndroidViewDraw
@NonNull public FlutterFragment.NewEngineFragmentBuilder shouldDelayFirstAndroidViewDraw(boolean shouldDelayFirstAndroidViewDraw)
Whether to delay the Android drawing pass till after the Flutter UI has been displayed.See {#link FlutterActivityAndFragmentDelegate#onCreateView} for more details.
-
createArgs
@NonNull protected Bundle createArgs()
-
build
@NonNull public <T extends FlutterFragment> T build()
Constructs a newFlutterFragment
(or a subclass) that is configured based on properties set on thisBuilder
.
-
-