🧩 高级功能
版本 PanGrowth
🧩 Widget组件导航
pangrowth_content插件提供了8个NativeView组件,让你能够像使用Flutter原生组件一样轻松集成短剧、短故事、小视频等功能。
💡 为什么使用Widget组件
- 更符合Flutter开发习惯: 像使用Container、ListView一样使用内容组件
- 简化代码: Widget封装了create、show、destroy等生命周期管理
- 更好的集成体验: 直接嵌入到你的页面布局中
📊 组件分类总览
短剧类组件 (3个)
组件名 | 类型 | 用途 | 文档链接 |
---|---|---|---|
DramaHomeNativeView | NativeView | 短剧聚合页 | 查看文档 |
DramaSwipeFlowNativeView | NativeView | 短剧滑滑流 | 查看文档 |
DramaPlayerNativeView | NativeView | 短剧播放器 | 查看文档 |
短故事类组件 (2个)
组件名 | 类型 | 用途 | 文档链接 |
---|---|---|---|
StoryHomeNativeView | NativeView | 短故事聚合页 | 查看文档 |
StoryReaderNativeView | NativeView | 短故事阅读器 | 查看文档 |
小视频类组件 (3个)
组件名 | 类型 | 用途 | 文档链接 |
---|---|---|---|
VideoNativeView | NativeView | 沉浸式小视频 | 查看文档 |
GridVideoNativeView | NativeView | 宫格/双Feed小视频 | 查看文档 |
UserProfileNativeView | NativeView | 个人主页 | 查看文档 |
🎯 组件类型说明
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('播放器就绪');
},
),
),
);
}
}
💰 自定义广告支持
部分组件支持接入自定义广告,实现更高的广告变现收益:
组件名 | 支持的广告类型 |
---|---|
DramaPlayerNativeView | Draw广告、Banner广告 |
DramaSwipeFlowNativeView | Draw广告、Banner广告 |
StoryReaderNativeView | 章间广告、段间广告、Banner广告 |
详细配置请查看: 自定义广告完整指南
⚠️ 注意事项
PlatformView限制
使用PlatformView组件时需注意:
- 层级问题: PlatformView在原生层渲染,无法与Flutter Widget自由叠加
- 性能考虑: 创建和销毁PlatformView有性能开销,避免频繁创建
- 生命周期: 确保在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(...),
);
}
}