67 lines
No EOL
2.3 KiB
Markdown
67 lines
No EOL
2.3 KiB
Markdown
_**Everything in this doc and linked from this doc is experimental. These details WILL change. Do not use these instructions or APIs in production code because we will break you.**_
|
|
|
|
# Add a Flutter View
|
|
|
|
Flutter can be added to an Android app as a single `View` in an `Activity`'s `View` hierarchy.
|
|
|
|
Before adding Flutter as a single `View`, you should consider if it is possible to add Flutter as a `Fragment` to reduce your development burden.
|
|
|
|
* [How to use a `FlutterFragment`](Experimental-Add-Flutter-Fragment-ViewPager.md)
|
|
|
|
If you really need to add Flutter as a single `View` then do the following.
|
|
|
|
## How to use FlutterView
|
|
|
|
### Create and start a FlutterEngine
|
|
|
|
Create and start a `FlutterEngine` by following the appropriate instructions. See the [FlutterEngine page](Experimental-Reuse-FlutterEngine-across-screens.md)
|
|
|
|
### Create a FlutterView and add to layout
|
|
|
|
```java
|
|
// Instantiate a new FlutterView.
|
|
FlutterView flutterView = new FlutterView(this);
|
|
|
|
// Add your FlutterView wherever you'd like. In this case we add
|
|
// the FlutterView to a FrameLayout.
|
|
FrameLayout frameLayout = findViewById(R.id.framelayout);
|
|
frameLayout.addView(flutterView);
|
|
```
|
|
|
|
Your `FlutterView` will not render anything at this point because it is not backed by any particular Flutter app.
|
|
|
|
### Attach your FlutterView to your FlutterEngine
|
|
|
|
```java
|
|
flutterView.attachToFlutterEngine(flutterEngine);
|
|
```
|
|
|
|
At this point you should see your Flutter UI rendering to your `FlutterView`, and touch interaction should work.
|
|
|
|
### Create and configure platform plugin
|
|
|
|
TODO(mattcarroll): update this info about the platform plugin
|
|
|
|
Fundamental communication between the Android platform and your Flutter app takes place over a `MethodChannel` with the name `"flutter/platform"`. For example, Android's `onPostResume()` call must be forwarded over the `flutterPlatformChannel` with the message `"AppLifecycleState.resumed"`.
|
|
|
|
```java
|
|
platformPlugin = new PlatformPlugin(activity);
|
|
MethodChannel flutterPlatformChannel = new MethodChannel(
|
|
flutterEngine.getDartExecutor(),
|
|
"flutter/platform",
|
|
JSONMethodCodec.INSTANCE
|
|
);
|
|
flutterPlatformChannel.setMethodCallHandler(platformPlugin);
|
|
```
|
|
|
|
### Add accessibility support
|
|
|
|
TODO(mattcarroll)
|
|
|
|
### Add support for plugins
|
|
|
|
TODO(mattcarroll)
|
|
|
|
### Handling orientation change
|
|
|
|
TODO(mattcarroll) |