🎬 短剧模块
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 提交失败时提前触发。

需要进一步协助?

与 LightCore 技术顾问沟通,获取商业化策略与集成支持。