Appearance
platform-view-demo
1. 实验目标
用最小 Flutter + Android 实现验证 PlatformView(对应 docs/05-bridge-hybrid/04):
- AndroidView 把原生 View 嵌入 Flutter 视图树
creationParams通过StandardMessageCodec从 Flutter 传参给原生侧- 原生侧
PlatformViewFactory.create()创建并返回 View(本例是 TextView)
2. 工程要点
- Flutter 侧:
AndroidView(viewType: 'native-label-view', creationParams: {...}) - Android 侧:
flutterEngine.platformViewsController.registry.registerViewFactory(...)在configureFlutterEngine里注册 creationParamsCodec: StandardMessageCodec与原生StandardMessageCodec.INSTANCE配对- 真实场景扩展:地图(google_maps_flutter)、相机预览、WebView 都是 PlatformView
3. 运行方式
bash
cd labs/flutter/host
flutter pub get
flutter run # Android 设备/模拟器入口:首页列表 → PlatformView 原生视图嵌入。
4. 预期现象
- 页面中部出现一个带浅蓝底色的原生 TextView(内容来自 Flutter 传参)
- Logcat 打印
PlatformView created, id=...
5. 常见误区
| 误区 | 实际情况 |
|---|---|
| PlatformView 是零成本嵌入 | 混合渲染有合成开销(Android 走 TextureLayer / VirtualDisplay 两种模式) |
| creationParams 可以传任意对象 | 必须能被 creationParamsCodec 序列化(标准类型或自定义 Codec) |
| iOS 和 Android 写法相同 | iOS 用 UiKitView,viewType 注册在 iOS 侧(本 demo 只做 Android) |