@@ -2,13 +2,12 @@ import 'dart:async';
22import 'package:get/get.dart' ;
33import 'package:rxdart/rxdart.dart' ;
44import '../models/player_state.dart' ;
5- import 'package:flutter/material.dart' ;
65import '../models/player_exception.dart' ;
76import '../models/player_error_type.dart' ;
87import '../core/player_error_dispatcher.dart' ;
98import '../interface/unified_player_interface.dart' ;
109import 'package:better_player_plus/better_player_plus.dart' ;
11- import 'package:pure_live/common/services/settings_service .dart' ;
10+ import 'package:pure_live/common/index .dart' hide PlayerState ;
1211
1312class BetterPlayerAdapter implements UnifiedPlayer {
1413 BetterPlayerController ? _controller;
@@ -30,21 +29,11 @@ class BetterPlayerAdapter implements UnifiedPlayer {
3029 BetterPlayerConfiguration betterPlayerConfiguration = BetterPlayerConfiguration (
3130 autoPlay: true ,
3231 fit: BoxFit .contain,
33- handleLifecycle: true ,
32+ handleLifecycle: false ,
3433 fullScreenByDefault: false ,
3534 autoDispose: false ,
3635 looping: false ,
3736 controlsConfiguration: BetterPlayerControlsConfiguration (showControls: false ),
38- playerVisibilityChangedBehavior: (double visibility) {
39- final SettingsService settingsService = Get .find <SettingsService >();
40- if (visibility == 0.0 ) {
41- if (! settingsService.enableBackgroundPlay.value) {
42- pause ();
43- }
44- } else {
45- play ();
46- }
47- },
4837 );
4938
5039 _controller = BetterPlayerController (betterPlayerConfiguration);
@@ -56,6 +45,15 @@ class BetterPlayerAdapter implements UnifiedPlayer {
5645 void _bindListeners () {
5746 _controller! .addEventsListener ((BetterPlayerEvent event) {
5847 switch (event.betterPlayerEventType) {
48+ case BetterPlayerEventType .initialized:
49+ case BetterPlayerEventType .changedResolution:
50+ final size = _controller? .videoPlayerController? .value.size;
51+ if (size != null && size.width > 0 ) {
52+ _widthSubject.add (size.width.toInt ());
53+ _heightSubject.add (size.height.toInt ());
54+ }
55+ break ;
56+
5957 case BetterPlayerEventType .play:
6058 _playingSubject.add (true );
6159 _stateSubject.add (PlayerState .playing);
@@ -70,6 +68,9 @@ class BetterPlayerAdapter implements UnifiedPlayer {
7068 break ;
7169 case BetterPlayerEventType .bufferingEnd:
7270 _loadingSubject.add (false );
71+ if (_playingSubject.value) {
72+ _stateSubject.add (PlayerState .playing);
73+ }
7374 break ;
7475 case BetterPlayerEventType .finished:
7576 _completeSubject.add (true );
@@ -90,14 +91,27 @@ class BetterPlayerAdapter implements UnifiedPlayer {
9091 }
9192
9293 @override
93- Future <void > setDataSource (String url, List <String > playUrls, Map <String , String > headers) async {
94+ Future <void > setDataSource (String url, List <String > playUrls, Map <String , String > headers, { LiveRoom ? room} ) async {
9495 try {
9596 _loadingSubject.add (true );
96-
97+ _widthSubject.add (null );
98+ _heightSubject.add (null );
99+ _completeSubject.add (false );
97100 BetterPlayerDataSource dataSource = BetterPlayerDataSource (
98101 BetterPlayerDataSourceType .network,
99102 url,
100103 headers: headers,
104+ liveStream: true ,
105+ notificationConfiguration: room != null
106+ ? BetterPlayerNotificationConfiguration (
107+ showNotification: true ,
108+ title: room.nick ?? "" ,
109+ author: room.title ?? "" ,
110+ imageUrl: room.cover,
111+ notificationChannelName: "VideoPlayer" ,
112+ activityName: "MainActivity" ,
113+ )
114+ : const BetterPlayerNotificationConfiguration (showNotification: false ),
101115 );
102116
103117 await _controller! .setupDataSource (dataSource);
0 commit comments