🎬 短剧模块
2.0: 对应 2.0.0 纯短剧契约。pub.dev 当前仍提供 1.0.3;依赖尚未升级时请切换到 1.x 文档。
基本用法
聚合页是原生 Fragment/ViewController 页面,应占满当前页面的可用内容区域。 Android 宿主必须继承 FlutterFragmentActivity。
final controller = DramaHomeController();
DramaHomeNativeView(
controller: controller,
config: const DramaHomeConfig(
showBackButton: false,
topDramaIds: <int>[1001, 1002],
detail: DramaDetailConfig(
unlockMode: DramaUnlockMode.sdkManaged,
freeEpisodes: 5,
unlockEpisodesPerAd: 2,
),
),
listener: DramaHomeListener(
onItemClicked: (event) {
debugPrint('打开短剧 ${event.drama.id}');
},
onError: (error) {
debugPrint('${error.code}: ${error.message}');
},
),
)topDramaIds 只接收当前仍在线的短剧 ID。页面应通过实时数据接口确认内容可用后再配置,不要长期缓存置顶列表对应的封面或播放状态。
控制器
共同能力通过 DramaHomeController 暴露。只有 Android 厂商组件支持的跳转、当前短剧索引、更多菜单和返回刷新能力位于 controller.android;iOS 不会返回伪成功。
await controller.android?.seekTo(const Duration(seconds: 30));
await controller.android?.setCurrentPage(0);
final int? episode = await controller.android?.getCurrentEpisode();
await controller.android?.setCurrentEpisode(3);
await controller.android?.openMoreDialog();
await controller.android?.backRefresh();页面销毁时 controller 会失效。业务自行持有 controller 时仍应在 State.dispose() 中调用一次 dispose()。
onReady 仅表示原生控制器已经挂载到有效容器,不会在 PlatformView 刚创建或 Fragment 提交失败时提前触发。