Skip to content

Commit a4c737b

Browse files
jhomlalaadmarwickPeter Majchrakmasoudk2000twogood
authored
Feature/december 2021 changes (jhomlala#855)
* Updated dependencies * Fix bug where a render error can occur if the width of the player is less than 240 pixels. (jhomlala#810) * Updated changelog * Switch from jcenter to mavenCentral (jhomlala#798) * Updated changelog * Fixed badState error (jhomlala#796) * Add dependencies on GCDWebServer and PINCache (jhomlala#787) Trying to fix part of jhomlala#714 * Updated changelog * Lint & format changes * Updated installation documentation page * Updated installation documentation page * Updated installation documentation page * Fixed full screen button padding in material controls. * Added setBetterPlayerControlsConfiguration method * Added `setOverriddenFit` in `BetterPlayerController`. * Added `setOverriddenFit` in `BetterPlayerController`. * General refactor * Format Co-authored-by: Alan <[email protected]> Co-authored-by: Peter Majchrak <[email protected]> Co-authored-by: masoudk2000 <[email protected]> Co-authored-by: David Eriksson <[email protected]>
1 parent 78f36d0 commit a4c737b

10 files changed

+91
-18
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.0.81
2+
* Fixed full screen button padding in material controls.
3+
* Added `setBetterPlayerControlsConfiguration` in `BetterPlayerController`.
4+
* Added `setOverriddenFit` in `BetterPlayerController`.
5+
16
## 0.0.80
27
* Removed pedantic dependency.
38
* Updated dependencies.

docs/_sidebar.md

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* [Custom element in overflow menu](customelementinoverflowmenu.md)
2525
* [Enable/disable controls](enabledisablecontrols.md)
2626
* [Overridden aspect ratio](overriddenaspectratio.md)
27+
* [Overridden fit](overriddenfit.md)
2728
* [Overriden duration](overriddenduration.md)
2829
* [Mix audio with others](mixaudiowithothers.md)
2930
* [Manual dispose](manualdispose.md)

docs/controlsconfiguration.md

+9
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,13 @@ final double sigmaX;
163163
164164
///Quality of Gaussian Blur for y (iOS only).
165165
final double sigmaY;
166+
```
167+
168+
You can change controls configuration in runtime with `setBetterPlayerControlsConfiguration` method of `BetterPlayerController`.
169+
170+
```dart
171+
_betterPlayerController.setBetterPlayerControlsConfiguration(
172+
BetterPlayerControlsConfiguration(
173+
overflowModalColor: Colors.amberAccent),
174+
);
166175
```

docs/overriddenfit.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Overriden aspect ratio
2+
3+
You can override `BetterPlayerConfiguration`'s `fit` parameter in runtime with `setOverridenFit`
4+
method from `betterPlayerController`.
5+
6+
```dart
7+
betterPlayerController.setOverriddenFit(BoxFit.contain);
8+
```

example/lib/pages/controls_configuration_page.dart

+11
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,17 @@ class _ControlsConfigurationPageState extends State<ControlsConfigurationPage> {
6161
aspectRatio: 16 / 9,
6262
child: BetterPlayer(controller: _betterPlayerController),
6363
),
64+
ElevatedButton(
65+
onPressed: () {
66+
setState(() {
67+
_betterPlayerController.setBetterPlayerControlsConfiguration(
68+
BetterPlayerControlsConfiguration(
69+
overflowModalColor: Colors.amberAccent),
70+
);
71+
});
72+
},
73+
child: Text("Reset settings"),
74+
)
6475
],
6576
),
6677
);

example/lib/pages/normal_player_page.dart

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:better_player/better_player.dart';
22
import 'package:better_player_example/constants.dart';
33
import 'package:flutter/material.dart';
4+
import 'package:flutter/services.dart';
45

56
class NormalPlayerPage extends StatefulWidget {
67
@override
@@ -19,6 +20,10 @@ class _NormalPlayerPageState extends State<NormalPlayerPage> {
1920
fit: BoxFit.contain,
2021
autoPlay: true,
2122
looping: true,
23+
deviceOrientationsAfterFullScreen: [
24+
DeviceOrientation.portraitDown,
25+
DeviceOrientation.portraitUp
26+
],
2227
);
2328
_betterPlayerDataSource = BetterPlayerDataSource(
2429
BetterPlayerDataSourceType.network,

lib/src/controls/better_player_cupertino_progress_bar.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class _VideoProgressBarState
6868
@override
6969
Widget build(BuildContext context) {
7070
final bool enableProgressBarDrag = betterPlayerController!
71-
.betterPlayerConfiguration.controlsConfiguration.enableProgressBarDrag;
71+
.betterPlayerControlsConfiguration.enableProgressBarDrag;
7272
return GestureDetector(
7373
onHorizontalDragStart: (DragStartDetails details) {
7474
if (!controller!.value.initialized || !enableProgressBarDrag) {

lib/src/controls/better_player_material_controls.dart

+17-15
Original file line numberDiff line numberDiff line change
@@ -334,21 +334,23 @@ class _BetterPlayerMaterialControlsState
334334
}
335335

336336
Widget _buildExpandButton() {
337-
return BetterPlayerMaterialClickableWidget(
338-
onTap: _onExpandCollapse,
339-
child: AnimatedOpacity(
340-
opacity: controlsNotVisible ? 0.0 : 1.0,
341-
duration: _controlsConfiguration.controlsHideTime,
342-
child: Container(
343-
height: _controlsConfiguration.controlBarHeight,
344-
margin: const EdgeInsets.only(right: 12.0),
345-
padding: const EdgeInsets.symmetric(horizontal: 8.0),
346-
child: Center(
347-
child: Icon(
348-
_betterPlayerController!.isFullScreen
349-
? _controlsConfiguration.fullscreenDisableIcon
350-
: _controlsConfiguration.fullscreenEnableIcon,
351-
color: _controlsConfiguration.iconsColor,
337+
return Padding(
338+
padding: EdgeInsets.only(right: 12.0),
339+
child: BetterPlayerMaterialClickableWidget(
340+
onTap: _onExpandCollapse,
341+
child: AnimatedOpacity(
342+
opacity: controlsNotVisible ? 0.0 : 1.0,
343+
duration: _controlsConfiguration.controlsHideTime,
344+
child: Container(
345+
height: _controlsConfiguration.controlBarHeight,
346+
padding: const EdgeInsets.symmetric(horizontal: 8.0),
347+
child: Center(
348+
child: Icon(
349+
_betterPlayerController!.isFullScreen
350+
? _controlsConfiguration.fullscreenDisableIcon
351+
: _controlsConfiguration.fullscreenEnableIcon,
352+
color: _controlsConfiguration.iconsColor,
353+
),
352354
),
353355
),
354356
),

lib/src/core/better_player_controller.dart

+32
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ class BetterPlayerController {
4242
///between flutter high level code and lower level native code.
4343
VideoPlayerController? videoPlayerController;
4444

45+
///Controls configuration
46+
late BetterPlayerControlsConfiguration _betterPlayerControlsConfiguration;
47+
48+
///Controls configuration
49+
BetterPlayerControlsConfiguration get betterPlayerControlsConfiguration =>
50+
_betterPlayerControlsConfiguration;
51+
4552
///Expose all active eventListeners
4653
List<Function(BetterPlayerEvent)?> get eventListeners =>
4754
_eventListeners.sublist(1);
@@ -139,6 +146,9 @@ class BetterPlayerController {
139146
///in configuration.
140147
double? _overriddenAspectRatio;
141148

149+
///Overridden fit which will be used instead of fit passed in configuration.
150+
BoxFit? _overriddenFit;
151+
142152
///Was Picture in Picture opened.
143153
bool _wasInPipMode = false;
144154

@@ -205,6 +215,8 @@ class BetterPlayerController {
205215
this.betterPlayerPlaylistConfiguration,
206216
BetterPlayerDataSource? betterPlayerDataSource,
207217
}) {
218+
this._betterPlayerControlsConfiguration =
219+
betterPlayerConfiguration.controlsConfiguration;
208220
_eventListeners.add(eventListener);
209221
if (betterPlayerDataSource != null) {
210222
setupDataSource(betterPlayerDataSource);
@@ -1027,6 +1039,19 @@ class BetterPlayerController {
10271039
return _overriddenAspectRatio ?? betterPlayerConfiguration.aspectRatio;
10281040
}
10291041

1042+
// ignore: use_setters_to_change_properties
1043+
///Setup overridden fit.
1044+
void setOverriddenFit(BoxFit fit) {
1045+
_overriddenFit = fit;
1046+
}
1047+
1048+
///Get fit used in current video. If fit is null, then fit from
1049+
///BetterPlayerConfiguration will be used. Otherwise [_overriddenFit] will be
1050+
///used.
1051+
BoxFit getFit() {
1052+
return _overriddenFit ?? betterPlayerConfiguration.fit;
1053+
}
1054+
10301055
///Enable Picture in Picture (PiP) mode. [betterPlayerGlobalKey] is required
10311056
///to open PiP mode in iOS. When device is not supported, PiP mode won't be
10321057
///open.
@@ -1239,6 +1264,13 @@ class BetterPlayerController {
12391264
betterPlayerDataSource.cacheConfiguration?.key);
12401265
}
12411266

1267+
/// Sets the new [betterPlayerControlsConfiguration] instance in the
1268+
/// controller.
1269+
void setBetterPlayerControlsConfiguration(
1270+
BetterPlayerControlsConfiguration betterPlayerControlsConfiguration) {
1271+
this._betterPlayerControlsConfiguration = betterPlayerControlsConfiguration;
1272+
}
1273+
12421274
/// Add controller internal event.
12431275
void _postControllerEvent(BetterPlayerControllerEvent event) {
12441276
if (!_controllerEventStreamController.isClosed) {

lib/src/core/better_player_with_controls.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class _BetterPlayerWithControlsState extends State<BetterPlayerWithControls> {
2525
widget.controller!.betterPlayerConfiguration.subtitlesConfiguration;
2626

2727
BetterPlayerControlsConfiguration get controlsConfiguration =>
28-
widget.controller!.betterPlayerConfiguration.controlsConfiguration;
28+
widget.controller!.betterPlayerControlsConfiguration;
2929

3030
final StreamController<bool> playerVisibilityStreamController =
3131
StreamController();
@@ -134,7 +134,7 @@ class _BetterPlayerWithControlsState extends State<BetterPlayerWithControls> {
134134
angle: rotation * pi / 180,
135135
child: _BetterPlayerVideoFitWidget(
136136
betterPlayerController,
137-
betterPlayerController.betterPlayerConfiguration.fit,
137+
betterPlayerController.getFit(),
138138
),
139139
),
140140
betterPlayerController.betterPlayerConfiguration.overlay ??

0 commit comments

Comments
 (0)