mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
|
# Integration test for hybrid composition on Android
|
||
|
|
||
|
This test verifies that the synthesized motion events that get to embedded
|
||
|
Android view are equal to the motion events that originally hit the FlutterView.
|
||
|
|
||
|
The test app's Android code listens to MotionEvents that get to FlutterView and
|
||
|
to an embedded Android view and sends them over a platform channel to the Dart
|
||
|
code where the events are matched.
|
||
|
|
||
|
This is what the app looks like:
|
||
|
|
||
|
![android_views test app](https://flutter.github.io/assets-for-api-docs/assets/readme-assets/android_views_test.png)
|
||
|
|
||
|
The blue part is the embedded Android view, because it is positioned at the top
|
||
|
left corner, the coordinate systems for FlutterView and for the embedded view's
|
||
|
virtual display has the same origin (this makes the MotionEvent comparison
|
||
|
easier as we don't need to translate the coordinates).
|
||
|
|
||
|
The app includes the following control buttons:
|
||
|
* RECORD - Start listening for MotionEvents for 3 seconds, matched/unmatched events are
|
||
|
displayed in the listview as they arrive.
|
||
|
* CLEAR - Clears the events that were recorded so far.
|
||
|
* SAVE - Saves the events that hit FlutterView to a file.
|
||
|
* PLAY FILE - Send a list of events from a bundled asset file to FlutterView.
|
||
|
|
||
|
A recorded touch events sequence is bundled as an asset in the
|
||
|
assets_for_android_view package which lives in the goldens repository.
|
||
|
|
||
|
When running this test with `flutter drive` the record touch sequences is
|
||
|
replayed and the test asserts that the events that got to FlutterView are
|
||
|
equivalent to the ones that got to the embedded view.
|