🧩 高级功能
版本 PanGrowth

🧩 Widget组件导航

pangrowth_content插件提供了8个NativeView组件,让你能够像使用Flutter原生组件一样轻松集成短剧、短故事、小视频等功能。

💡 为什么使用Widget组件

  • 更符合Flutter开发习惯: 像使用Container、ListView一样使用内容组件
  • 简化代码: Widget封装了create、show、destroy等生命周期管理
  • 更好的集成体验: 直接嵌入到你的页面布局中

📊 组件分类总览

短剧类组件 (3个)

组件名类型用途文档链接
DramaHomeNativeViewNativeView短剧聚合页查看文档
DramaSwipeFlowNativeViewNativeView短剧滑滑流查看文档
DramaPlayerNativeViewNativeView短剧播放器查看文档

短故事类组件 (2个)

组件名类型用途文档链接
StoryHomeNativeViewNativeView短故事聚合页查看文档
StoryReaderNativeViewNativeView短故事阅读器查看文档

小视频类组件 (3个)

组件名类型用途文档链接
VideoNativeViewNativeView沉浸式小视频查看文档
GridVideoNativeViewNativeView宫格/双Feed小视频查看文档
UserProfileNativeViewNativeView个人主页查看文档

🎯 组件类型说明

NativeView组件

通过原生视图嵌入实现,提供完整的原生SDK功能:

特点:

  • ✅ 使用原生SDK的完整UI和交互
  • ✅ 性能优秀,体验流畅
  • ✅ 功能最完整
  • ⚠️ 需要处理PlatformView的一些限制

示例: DramaPlayerNativeView, VideoNativeView


🚀 快速开始

使用NativeView组件

import 'package:flutter/material.dart';
import 'package:pangrowth_content/pangrowth_content.dart';

class MyDramaPlayerPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: DramaPlayerNativeView(
        config: DramaPlayerConfig(
          dramaId: 12345,
          episode: 1,
          autoPlay: true,
        ),
        listener: DramaPlayerListener(
          onPlayerReady: (playerId) {
            print('播放器就绪');
          },
        ),
      ),
    );
  }
}

💰 自定义广告支持

部分组件支持接入自定义广告,实现更高的广告变现收益:

组件名支持的广告类型
DramaPlayerNativeViewDraw广告、Banner广告
DramaSwipeFlowNativeViewDraw广告、Banner广告
StoryReaderNativeView章间广告、段间广告、Banner广告

详细配置请查看: 自定义广告完整指南


⚠️ 注意事项

PlatformView限制

使用PlatformView组件时需注意:

  1. 层级问题: PlatformView在原生层渲染,无法与Flutter Widget自由叠加
  2. 性能考虑: 创建和销毁PlatformView有性能开销,避免频繁创建
  3. 生命周期: 确保在dispose时正确释放资源

单例限制

某些组件(如DramaHomeNativeView)有单例限制,使用前需先销毁旧实例。


🔗 相关文档

基础入门

短剧功能

短故事功能

小视频功能

进阶主题


💡 最佳实践

生命周期管理

class MyPage extends StatefulWidget {
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  final _controller = DramaPlayerController();

  @override
  void dispose() {
    // ✅ 重要:在dispose时释放资源
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return DramaPlayerNativeView(
      controller: _controller,
      config: DramaPlayerConfig(...),
    );
  }
}

需要进一步协助?

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