pangrowth_content 1.0.0 copy "pangrowth_content: ^1.0.0" to clipboard
pangrowth_content: ^1.0.0 copied to clipboard

retracted

穿山甲内容输出Flutter插件,基于PanGrowth SDK实现短剧播放、小视频等内容功能。支持Android和iOS平台,提供完整的内容管理和播放能力。

pangrowth_content #

穿山甲内容 Flutter 插件,基于 PanGrowth SDK 实现短剧播放、小视频、短故事等内容功能。

✨ 特性 #

  • 短剧功能 - 短剧聚合页、播放器、剧集管理、收藏点赞
  • 小视频功能 - 沉浸式小视频、宫格布局、双Feed流
  • 短故事功能 - 故事阅读器、分类浏览、阅读进度管理
  • 事件监听 - 完整的播放、用户交互事件回调
  • 双平台支持 - Android 和 iOS 平台原生实现

📱 平台支持 #

Android iOS
✅ 21+ ✅ 11.0+

🛠️ 安装 #

1. 添加依赖 #

pubspec.yaml 中添加依赖:

dependencies:
  pangrowth_content: ^1.0.0
  gromore_ads: ^1.0.0  # 必需依赖

运行安装命令:

flutter pub get

2. Android 配置 #

2.1 修改 android/build.gradle

allprojects {
    repositories {
        google()
        mavenCentral()
        // 必需:穿山甲广告SDK仓库
        maven { url 'https://artifact.bytedance.com/repository/pangle' }
        // 必需:穿山甲内容SDK仓库
        maven { url 'https://artifact.bytedance.com/repository/Volcengine' }
    }
}

2.2 修改 android/app/build.gradle

android {
    compileSdkVersion 33  // 或更高版本

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 33
    }
}

3. iOS 配置 #

3.1 修改 ios/Podfile

# 必需:添加穿山甲 SDK 源
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/volcengine/volcengine-specs.git'

platform :ios, '11.0'

3.2 安装依赖

cd ios
pod install
cd ..

4. 配置文件 #

将穿山甲平台提供的 SDK_Setting_XXXXXXX.json 配置文件:

  • Flutter assets(推荐):放到项目根目录的 assets/ 目录
  • Android 原生:放到 android/app/src/main/assets/
  • iOS Bundle:放到 ios/Runner/ 并在 Xcode 中添加到 Copy Bundle Resources

pubspec.yaml 中注册资源:

flutter:
  assets:
    - assets/

🚀 快速开始 #

初始化 SDK #

import 'package:flutter/foundation.dart';
import 'package:gromore_ads/gromore_ads.dart';
import 'package:pangrowth_content/pangrowth_content.dart';

Future<void> initContentSDK() async {
  // 1. 先初始化 GroMore 广告 SDK(内容 SDK 依赖它)
  final adsReady = await GromoreAds.initAd(
    'your_gromore_app_id',
    useMediation: true,
    debugMode: kDebugMode,
  );

  if (!adsReady) {
    debugPrint('GroMore 广告 SDK 初始化失败');
    return;
  }

  // 2. 初始化内容 SDK
  final initialized = await PangrowthContent.initialize(
    configPath: 'SDK_Setting_5609594.json',
    config: const ContentConfig(
      enableDrama: true,   // 启用短剧
      enableStory: true,   // 启用故事
      enableVideo: true,   // 启用小视频
      debugLog: kDebugMode,
    ),
  );

  if (!initialized) {
    debugPrint('穿山甲内容 SDK 初始化失败');
    return;
  }

  // 3. 启动内容服务
  await PangrowthContent.start();
  debugPrint('✅ 内容 SDK 启动成功');
}

📺 短剧模块 #

短剧聚合页 #

在 Flutter 页面中嵌入短剧聚合页:

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

class DramaHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('短剧推荐')),
      body: DramaHomeNativeView(
        config: const DramaHomeConfig(
          showBackBtn: false,           // 已有 AppBar,不需要原生返回按钮
          freeEpisodesCount: 3,         // 前 3 集免费
          unlockEpisodesCountUsingAd: 2, // 激励广告解锁 2 集
        ),
      ),
    );
  }
}

短剧播放器 #

使用 SDK 默认广告解锁流程:

class DramaPlayerPage extends StatelessWidget {
  final int dramaId;

  const DramaPlayerPage({required this.dramaId});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: DramaPlayerNativeView(
        config: DramaPlayerConfig(
          dramaId: dramaId,
          episode: 1,              // 起始集数
          adMode: 'common',        // SDK 广告模式
          freeSet: 2,              // 前 2 集免费
          unlockSet: 3,            // 每次解锁 3 集
        ),
      ),
    );
  }
}

获取短剧列表 #

// 获取推荐短剧列表
final dramas = await PangrowthContent.getRecommendedDramaList(
  page: 1,
  count: 20,
);

// 搜索短剧
final searchResults = await PangrowthContent.searchDrama(
  '都市',
  isFuzzy: true,
  page: 1,
  count: 15,
);

// 获取分类列表
final categories = await PangrowthContent.getCategoryList();

// 按分类获取短剧
final dramasByCategory = await PangrowthContent.getDramaListByCategory(
  '甜宠',
  page: 1,
  count: 20,
);

📱 小视频模块 #

沉浸式小视频 #

全屏沉浸式视频播放体验:

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

class VideoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: VideoNativeView(
        channelType: 1,  // 1-推荐, 2-关注, 3-推荐+关注
        autoPlay: true,
        listener: VideoListener(
          onVideoReady: (videoId) {
            debugPrint('视频就绪: $videoId');
          },
          onVideoError: (error) {
            debugPrint('视频错误: $error');
          },
        ),
      ),
    );
  }
}

宫格小视频 #

宫格布局的视频浏览入口:

class GridVideoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('宫格小视频')),
      body: GridVideoNativeView(
        layout: GridVideoLayout.grid,  // grid-宫格布局, doubleFeed-双Feed布局
        config: const GridVideoConfig(
          scene: 'home_grid',
          cardStyle: GridVideoCardStyle.normal,
          enableRefresh: true,
        ),
      ),
    );
  }
}

📖 故事模块 #

短故事模块提供完整的阅读器、分类浏览、阅读历史和进度管理功能。

快速示例 #

// 获取故事列表
final stories = await PangrowthContent.getStoryList(
  page: 1,
  count: 20,
  categoryId: 1,
);

// 打开故事阅读器
class StoryReaderPage extends StatelessWidget {
  final int storyId;

  const StoryReaderPage({required this.storyId});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StoryReaderNativeView(
        storyId: storyId,
        storyName: '故事标题',
      ),
    );
  }
}

📡 事件监听 #

Widget级别监听 #

通过 Listener 监听组件事件(推荐):

DramaPlayerNativeView(
  config: config,
  listener: DramaPlayerListener(
    onPlayerReady: (playerId) {
      debugPrint('播放器就绪: $playerId');
    },
    onEpisodeChange: (episode) {
      debugPrint('集数切换: $episode');
    },
    onPlayerError: (error) {
      debugPrint('播放器错误: $error');
    },
  ),
)

全局事件监听 #

监听 SDK 底层的全局事件(用于日志、埋点等):

// 设置事件监听器
PangrowthContent.onEventListener(MyContentEventListener());

class MyContentEventListener extends OnContentEventListener {
  @override
  void onDramaPlayerEvent(DramaPlayerEvent event) {
    print('短剧播放事件: ${event.action}');
  }

  @override
  void onVideoEvent(VideoEvent event) {
    print('小视频事件: ${event.type}');
  }

  // ... 其他事件回调
}

// 注销监听
await PangrowthContent.removeEventListener();

❓ 常见问题 #

Android 编译失败 #

Q: 提示找不到 SDK 依赖?

A: 确认 android/build.gradle 中添加了两个 Maven 仓库:

allprojects {
    repositories {
        maven { url 'https://artifact.bytedance.com/repository/pangle' }
        maven { url 'https://artifact.bytedance.com/repository/Volcengine' }
    }
}

iOS 编译失败 #

Q: 提示 CocoaPods 错误?

A: 尝试以下步骤:

cd ios
pod deintegrate
pod install
cd ..
flutter clean
flutter run

初始化失败 #

Q: 提示配置文件找不到?

A: 检查配置文件位置和文件名:

  1. 确保文件名格式为 SDK_Setting_XXXXXXX.json
  2. Flutter assets:放在 assets/ 目录并在 pubspec.yaml 中注册
  3. Android:放在 android/app/src/main/assets/
  4. iOS:放在 ios/Runner/ 并在 Xcode 中添加到 Copy Bundle Resources
flutter pub get
flutter clean
flutter run

运行时错误 #

Q: Android 运行时崩溃,提示 MultiDex 问题?

A: 在 android/app/build.gradle 中启用 multiDex:

defaultConfig {
    multiDexEnabled true
}

dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
}

Q: 聚合页或播放器显示空白?

A: 确保:

  1. 已完成 SDK 初始化:PangrowthContent.initialize()PangrowthContent.start()
  2. GroMore 广告 SDK 已成功初始化
  3. 网络连接正常

📄 许可证 #

本插件遵循 LICENSE 文件中的许可证条款。


💬 支持与反馈 #


© 2025 ZheCent Technology. All rights reserved.

1
likes
0
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

穿山甲内容输出Flutter插件,基于PanGrowth SDK实现短剧播放、小视频等内容功能。支持Android和iOS平台,提供完整的内容管理和播放能力。

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (license)

Dependencies

flutter, gromore_ads, plugin_platform_interface

More

Packages that depend on pangrowth_content

Packages that implement pangrowth_content