
- added language for all code blocks - replaced `bash` or `shell` with `sh` for consistency. - added `sh` and `console` in the GitHub template link generator. - updated test for GitHub template.
48 lines
2.0 KiB
Markdown
48 lines
2.0 KiB
Markdown
# external_textures
|
|
|
|
Tests external texture rendering between a native[^1] platform and Flutter.
|
|
|
|
Part of Flutter's API for [plugins](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin) includes passing _external textures_, or textures
|
|
created outside of Flutter, to Flutter, typically using the [`Texture`][texture]
|
|
widget. This is useful for plugins that render video, or for plugins that
|
|
interact with the camera.
|
|
|
|
For example:
|
|
|
|
- [`packages/camera`][camera]
|
|
- [`packages/video_player`][video_player]
|
|
|
|
[texture]: https://api.flutter.dev/flutter/widgets/Texture-class.html
|
|
[camera]: https://github.com/flutter/packages/tree/8255fbed74465425a1ec06a1804225e705e29f52/packages/camera
|
|
[video_player]: https://github.com/flutter/packages/tree/8255fbed74465425a1ec06a1804225e705e29f52/packages/video_player
|
|
|
|
Because external textures are created outside of Flutter, there is often subtle
|
|
translation that needs to happen between the native platform and Flutter, which
|
|
is hard to observe. These integration tests are designed to help catch these
|
|
subtle translation issues.
|
|
|
|
## How it works
|
|
|
|
- Each `lib/*_main.dart` file is a Flutter app instrumenting a test case.
|
|
- There is a corresponding `test_driver/*_test.dart` that runs assertions.
|
|
|
|
To run the test cases locally, use `flutter drive`[^2]:
|
|
|
|
```sh
|
|
flutter drive lib/frame_rate_main.dart --driver test_driver/frame_rate_test.dart
|
|
```
|
|
|
|
> [!TIP]
|
|
> On CI, the test cases are run within our [device lab](../../devicelab/README.md).
|
|
>
|
|
> See [`devicelab/lib/tasks/integration_tests.dart`](../../devicelab/lib/tasks/integration_tests.dart)
|
|
> and search for `createExternalUiFrameRateIntegrationTest`.
|
|
>
|
|
> The actual tests are run by task runners:
|
|
>
|
|
> - [Android](../../devicelab/bin/tasks/external_textures_integration_test.dart)
|
|
> - [iOS](../../devicelab/bin/tasks/external_textures_integration_test_ios.dart)
|
|
|
|
[^1]: Only iOS and Android.
|
|
[^2]: Unfortunately documentation is quite limited. See [#142021](https://github.com/flutter/flutter/issues/142021).
|