Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:developer';
- import 'package:bccm_player/bccm_player.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_hooks/flutter_hooks.dart';
- import 'package:klik_film/applications/others/klik_film_extension.dart';
- import 'package:klik_film/data/sources/catalog/catalog_source_provider.dart';
- class MainPlayerPage extends StatefulHookWidget {
- final VideoDetailDataModel data;
- const MainPlayerPage({required this.data, super.key});
- @override
- State<MainPlayerPage> createState() => _MainPlayerPageState();
- }
- class _MainPlayerPageState extends State<MainPlayerPage> {
- VideoDetailDataModel get data => widget.data;
- final viewController = BccmPlayerViewController(
- playerController: BccmPlayerController.primary,
- config: BccmPlayerViewConfig(
- pipOnLeave: true,
- // controlsConfig: BccmPlayerControlsConfig(customBuilder: (_) => SizedBox.shrink()),
- ),
- );
- BccmPlayerController get playerController => viewController.playerController;
- @override
- void initState() {
- setOrientation(0);
- playerController.replaceCurrentMediaItem(MediaItem(
- url: '${data.detail?.video.files?.online.hd?.file}',
- mimeType: 'application/vnd.apple.mpegurl',
- drmConfiguration: DrmConfiguration(
- licenseServerUrl: 'https://drm-fairplay-licensing.axprod.net/AcquireLicense',
- drmType: DrmType.fairplay,
- fpsCertificateUrl: 'https://klikfilm.com/v2/desktop/drm/fairplay.cer',
- licenseRequestHeaders: {
- 'X-AxDRM-Message': '${data.detail?.video.files?.online.hd?.token}',
- },
- ),
- ));
- playerController.initialize().then((_) async {
- playerController.addListener(playerListener);
- // await playerController.setupSubtitles([
- // SubtitleNetwork(
- // 'https://t.cdn.klikfilm.net/subtitle/flat_girls_id_rev.srt',
- // selected: true,
- // metadata: SubtitleMetadata(code: 'ID', title: 'Bahasa Indonesia'),
- // type: SubtitleType.srt,
- // ),
- // ]);
- await playerController.setMixWithOthers(false);
- });
- super.initState();
- }
- void playerListener() {
- final playbackState = playerController.value.playbackState;
- log('[playerListener] playbackState($playbackState)');
- }
- @override
- void dispose() {
- playerController.removeListener(playerListener);
- setOrientation(1);
- if (playerController.isPrimary) {
- playerController.stop(reset: true);
- } else {
- playerController.dispose();
- }
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- // final player = useListenable(playerController);
- return PopScope(
- canPop: true,
- onPopInvokedWithResult: (bool didPop, result) async {
- // await sendWatchDuration(forceRefresh: true);
- },
- child: Scaffold(
- backgroundColor: Colors.black,
- body: BccmPlayerView(BccmPlayerController.primary, config: viewController.config),
- // body: playerLoaded.value
- // ? BccmPlayerView(BccmPlayerController.primary, config: viewController.config)
- // : Center(child: CircularProgressIndicator(color: KFColor.primary)),
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment