1
-
2
1
import 'package:dantotsu/Screens/Info/Tabs/Watch/Anime/Player/Platform/BasePlayer.dart' ;
3
2
import 'package:flutter/cupertino.dart' ;
3
+ import 'package:get/get_rx/src/rx_types/rx_types.dart' ;
4
4
import 'package:video_player/video_player.dart' ;
5
5
import 'package:fvp/fvp.dart' as fvp;
6
6
7
- class AndroidPlayer extends BasePlayer {
8
-
9
- late VideoPlayer player ;
7
+ class AndroidPlayer extends BasePlayer {
8
+ final String url;
9
+ Rx < BoxFit > resizeMode ;
10
10
late VideoPlayerController videoController;
11
+
12
+ AndroidPlayer (this .url, this .resizeMode) {
13
+ videoController = VideoPlayerController .network (url);
14
+ }
15
+
11
16
@override
12
17
Future <void > open (String url, Duration duration) async {
18
+ videoController.dispose ();
13
19
videoController = VideoPlayerController .network (url);
14
- player = VideoPlayer (videoController);
15
20
await videoController.initialize ();
16
21
await videoController.seekTo (duration);
17
22
videoController.play ();
@@ -20,7 +25,6 @@ class AndroidPlayer extends BasePlayer{
20
25
@override
21
26
Future <void > pause () => videoController.pause ();
22
27
23
-
24
28
@override
25
29
Future <void > play () => videoController.play ();
26
30
@@ -38,7 +42,8 @@ class AndroidPlayer extends BasePlayer{
38
42
videoController.addListener (() {
39
43
isBuffering.value = videoController.value.isBuffering;
40
44
isPlaying.value = videoController.value.isPlaying;
41
- bufferingTime.value = _formatTime (videoController.value.buffered.first.end.inSeconds);
45
+ bufferingTime.value =
46
+ _formatTime (videoController.value.buffered.first.end.inSeconds);
42
47
currentPosition.value = videoController.value.position;
43
48
currentTime.value = _formatTime (videoController.value.position.inSeconds);
44
49
maxTime.value = _formatTime (videoController.value.duration.inSeconds);
@@ -58,28 +63,38 @@ class AndroidPlayer extends BasePlayer{
58
63
59
64
@override
60
65
Widget playerWidget () {
61
- return player;
66
+ return AspectRatio (
67
+ aspectRatio: videoController.value.aspectRatio,
68
+ child: FittedBox (
69
+ fit: resizeMode.value,
70
+ child: SizedBox (
71
+ width: videoController.value.size.width,
72
+ height: videoController.value.size.height,
73
+ child: VideoPlayer (videoController),
74
+ ),
75
+ ),
76
+ );
62
77
}
63
78
64
79
@override
65
80
Future <void > seek (Duration duration) async =>
66
- videoController.seekTo (duration);
67
-
81
+ videoController.seekTo (duration);
68
82
69
83
@override
70
- Future <void > setRate (double rate) async => videoController. setPlaybackSpeed (rate);
71
-
84
+ Future <void > setRate (double rate) async =>
85
+ videoController. setPlaybackSpeed (rate);
72
86
73
87
@override
74
- Future <void > setSubtitle (String subtitleUri, String language) async => videoController. setExternalSubtitle (subtitleUri);
75
-
88
+ Future <void > setSubtitle (String subtitleUri, String language) async =>
89
+ videoController. setExternalSubtitle (subtitleUri);
76
90
77
91
@override
78
- Future <void > setVolume (double volume) async => videoController.setVolume (volume);
92
+ Future <void > setVolume (double volume) async =>
93
+ videoController.setVolume (volume);
79
94
80
95
@override
81
96
void dispose () {
82
- videoController.dispose ();
83
97
super .dispose ();
98
+ videoController.dispose ();
84
99
}
85
- }
100
+ }
0 commit comments