File tree Expand file tree Collapse file tree 4 files changed +34
-84
lines changed Expand file tree Collapse file tree 4 files changed +34
-84
lines changed Original file line number Diff line number Diff line change 1
1
import 'dart:async' ;
2
- import 'dart:io' ;
3
2
import 'dart:math' as math;
4
3
import 'dart:ui' as ui;
5
4
@@ -811,33 +810,7 @@ class _CupertinoControlsState extends State<CupertinoControls>
811
810
void _updateState () {
812
811
if (! mounted) return ;
813
812
814
- late final bool buffering;
815
-
816
- if (Platform .isAndroid) {
817
- if (controller.value.isBuffering) {
818
- // -> Check if we actually buffer, as android has a bug preventing to
819
- // get the correct buffering state from this single bool.
820
- final VideoPlayerValue value = controller.value;
821
-
822
- final int position = value.position.inMilliseconds;
823
-
824
- // Special case, if the video is finished, we don't want to show the
825
- // buffering indicator anymore
826
- if (position >= value.duration.inMilliseconds) {
827
- buffering = false ;
828
- } else {
829
- final int buffer =
830
- value.buffered.lastOrNull? .end.inMilliseconds ?? - 1 ;
831
-
832
- buffering = position >= buffer;
833
- }
834
- } else {
835
- // -> No buffering
836
- buffering = false ;
837
- }
838
- } else {
839
- buffering = controller.value.isBuffering;
840
- }
813
+ final bool buffering = getIsBuffering (controller);
841
814
842
815
// display the progress bar indicator only after the buffering delay if it has been set
843
816
if (chewieController.progressIndicatorDelay != null ) {
Original file line number Diff line number Diff line change
1
+ import 'dart:io' ;
2
+
3
+ import 'package:video_player/video_player.dart' ;
4
+
1
5
String formatDuration (Duration position) {
2
6
final ms = position.inMilliseconds;
3
7
@@ -30,3 +34,30 @@ String formatDuration(Duration position) {
30
34
31
35
return formattedTime;
32
36
}
37
+
38
+ bool getIsBuffering (VideoPlayerController controller) {
39
+ final VideoPlayerValue value = controller.value;
40
+
41
+ if (Platform .isAndroid) {
42
+ if (value.isBuffering) {
43
+ // -> Check if we actually buffer, as android has a bug preventing to
44
+ // get the correct buffering state from this single bool.
45
+ final int position = value.position.inMilliseconds;
46
+
47
+ // Special case, if the video is finished, we don't want to show the
48
+ // buffering indicator anymore
49
+ if (position >= value.duration.inMilliseconds) {
50
+ return false ;
51
+ } else {
52
+ final int buffer = value.buffered.lastOrNull? .end.inMilliseconds ?? - 1 ;
53
+
54
+ return position >= buffer;
55
+ }
56
+ } else {
57
+ // -> No buffering
58
+ return false ;
59
+ }
60
+ }
61
+
62
+ return value.isBuffering;
63
+ }
Original file line number Diff line number Diff line change 1
1
import 'dart:async' ;
2
- import 'dart:io' ;
3
2
4
3
import 'package:chewie/src/center_play_button.dart' ;
5
4
import 'package:chewie/src/center_seek_button.dart' ;
@@ -646,33 +645,7 @@ class _MaterialControlsState extends State<MaterialControls>
646
645
void _updateState () {
647
646
if (! mounted) return ;
648
647
649
- late final bool buffering;
650
-
651
- if (Platform .isAndroid) {
652
- if (controller.value.isBuffering) {
653
- // -> Check if we actually buffer, as android has a bug preventing to
654
- // get the correct buffering state from this single bool.
655
- final VideoPlayerValue value = controller.value;
656
-
657
- final int position = value.position.inMilliseconds;
658
-
659
- // Special case, if the video is finished, we don't want to show the
660
- // buffering indicator anymore
661
- if (position >= value.duration.inMilliseconds) {
662
- buffering = false ;
663
- } else {
664
- final int buffer =
665
- value.buffered.lastOrNull? .end.inMilliseconds ?? - 1 ;
666
-
667
- buffering = position >= buffer;
668
- }
669
- } else {
670
- // -> No buffering
671
- buffering = false ;
672
- }
673
- } else {
674
- buffering = controller.value.isBuffering;
675
- }
648
+ final bool buffering = getIsBuffering (controller);
676
649
677
650
// display the progress bar indicator only after the buffering delay if it has been set
678
651
if (chewieController.progressIndicatorDelay != null ) {
Original file line number Diff line number Diff line change 1
1
import 'dart:async' ;
2
- import 'dart:io' ;
3
2
4
3
import 'package:chewie/src/animated_play_pause.dart' ;
5
4
import 'package:chewie/src/center_play_button.dart' ;
@@ -582,33 +581,7 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
582
581
void _updateState () {
583
582
if (! mounted) return ;
584
583
585
- late final bool buffering;
586
-
587
- if (Platform .isAndroid) {
588
- if (controller.value.isBuffering) {
589
- // -> Check if we actually buffer, as android has a bug preventing to
590
- // get the correct buffering state from this single bool.
591
- final VideoPlayerValue value = controller.value;
592
-
593
- final int position = value.position.inMilliseconds;
594
-
595
- // Special case, if the video is finished, we don't want to show the
596
- // buffering indicator anymore
597
- if (position >= value.duration.inMilliseconds) {
598
- buffering = false ;
599
- } else {
600
- final int buffer =
601
- value.buffered.lastOrNull? .end.inMilliseconds ?? - 1 ;
602
-
603
- buffering = position >= buffer;
604
- }
605
- } else {
606
- // -> No buffering
607
- buffering = false ;
608
- }
609
- } else {
610
- buffering = controller.value.isBuffering;
611
- }
584
+ final bool buffering = getIsBuffering (controller);
612
585
613
586
// display the progress bar indicator only after the buffering delay if it has been set
614
587
if (chewieController.progressIndicatorDelay != null ) {
You can’t perform that action at this time.
0 commit comments