Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 7e21aec

Browse files
committed
Make video players private
1 parent c391466 commit 7e21aec

File tree

1 file changed

+91
-92
lines changed

1 file changed

+91
-92
lines changed

packages/video_player/video_player_web/lib/video_player_web.dart

Lines changed: 91 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,97 @@ import 'package:flutter/material.dart';
77
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
88
import 'package:video_player_platform_interface/video_player_platform_interface.dart';
99

10-
class VideoPlayer {
11-
VideoPlayer({this.uri, this.textureId});
10+
/// The web implementation of [VideoPlayerPlatform].
11+
///
12+
/// This class implements the `package:video_player` functionality for the web.
13+
class VideoPlayerPlugin extends VideoPlayerPlatform {
14+
/// Registers this class as the default instance of [VideoPlayerPlatform].
15+
static void registerWith(Registrar registrar) {
16+
VideoPlayerPlatform.instance = VideoPlayerPlugin();
17+
}
18+
19+
Map<int, _VideoPlayer> _videoPlayers = <int, _VideoPlayer>{};
20+
21+
int _textureCounter = 1;
22+
23+
@override
24+
Future<void> init() async {
25+
return _disposeAllPlayers();
26+
}
27+
28+
@override
29+
Future<void> dispose(int textureId) {
30+
_videoPlayers[textureId].dispose();
31+
_videoPlayers.remove(textureId);
32+
return null;
33+
}
34+
35+
void _disposeAllPlayers() {
36+
_videoPlayers
37+
.forEach((_, _VideoPlayer videoPlayer) => videoPlayer.dispose());
38+
_videoPlayers.clear();
39+
}
40+
41+
@override
42+
Future<int> create(DataSource dataSource) async {
43+
final int textureId = _textureCounter;
44+
_textureCounter++;
45+
46+
final _VideoPlayer player = _VideoPlayer(
47+
uri: Uri.parse(dataSource.uri),
48+
textureId: textureId,
49+
);
50+
51+
player.setupVideoPlayer();
52+
53+
_videoPlayers[textureId] = player;
54+
return textureId;
55+
}
56+
57+
@override
58+
Future<void> setLooping(int textureId, bool looping) async {
59+
return _videoPlayers[textureId].setLooping(looping);
60+
}
61+
62+
@override
63+
Future<void> play(int textureId) async {
64+
return _videoPlayers[textureId].play();
65+
}
66+
67+
@override
68+
Future<void> pause(int textureId) async {
69+
return _videoPlayers[textureId].pause();
70+
}
71+
72+
@override
73+
Future<void> setVolume(int textureId, double volume) async {
74+
return _videoPlayers[textureId].setVolume(volume);
75+
}
76+
77+
@override
78+
Future<void> seekTo(int textureId, Duration position) async {
79+
return _videoPlayers[textureId].seekTo(position);
80+
}
81+
82+
@override
83+
Future<Duration> getPosition(int textureId) async {
84+
_videoPlayers[textureId].sendBufferingUpdate();
85+
return _videoPlayers[textureId].getPosition();
86+
}
87+
88+
@override
89+
Stream<VideoEvent> videoEventsFor(int textureId) {
90+
return _videoPlayers[textureId].eventController.stream;
91+
}
92+
93+
@override
94+
Widget buildView(int textureId) {
95+
return HtmlElementView(viewType: textureId.toString());
96+
}
97+
}
98+
99+
class _VideoPlayer {
100+
_VideoPlayer({this.uri, this.textureId});
12101

13102
final StreamController<VideoEvent> eventController =
14103
StreamController<VideoEvent>();
@@ -105,93 +194,3 @@ class VideoPlayer {
105194
return durationRange;
106195
}
107196
}
108-
109-
/// The web implementation of [VideoPlayerPlatform].
110-
///
111-
/// This class implements the `package:video_player` functionality for the web.
112-
class VideoPlayerPlugin extends VideoPlayerPlatform {
113-
/// Registers this class as the default instance of [VideoPlayerPlatform].
114-
static void registerWith(Registrar registrar) {
115-
VideoPlayerPlatform.instance = VideoPlayerPlugin();
116-
}
117-
118-
Map<int, VideoPlayer> videoPlayers = <int, VideoPlayer>{};
119-
Map<int, StreamController<VideoEvent>> videoEventControllers =
120-
<int, StreamController<VideoEvent>>{};
121-
122-
int _textureCounter = 1;
123-
124-
@override
125-
Future<void> init() async {
126-
return _disposeAllPlayers();
127-
}
128-
129-
@override
130-
Future<void> dispose(int textureId) {
131-
videoPlayers[textureId].dispose();
132-
videoPlayers.remove(textureId);
133-
return null;
134-
}
135-
136-
void _disposeAllPlayers() {
137-
videoPlayers.forEach((_, VideoPlayer videoPlayer) => videoPlayer.dispose());
138-
videoPlayers.clear();
139-
}
140-
141-
@override
142-
Future<int> create(DataSource dataSource) async {
143-
final int textureId = _textureCounter;
144-
_textureCounter++;
145-
146-
final VideoPlayer player = VideoPlayer(
147-
uri: Uri.parse(dataSource.uri),
148-
textureId: textureId,
149-
);
150-
151-
player.setupVideoPlayer();
152-
153-
videoPlayers[textureId] = player;
154-
return textureId;
155-
}
156-
157-
@override
158-
Future<void> setLooping(int textureId, bool looping) async {
159-
return videoPlayers[textureId].setLooping(looping);
160-
}
161-
162-
@override
163-
Future<void> play(int textureId) async {
164-
return videoPlayers[textureId].play();
165-
}
166-
167-
@override
168-
Future<void> pause(int textureId) async {
169-
return videoPlayers[textureId].pause();
170-
}
171-
172-
@override
173-
Future<void> setVolume(int textureId, double volume) async {
174-
return videoPlayers[textureId].setVolume(volume);
175-
}
176-
177-
@override
178-
Future<void> seekTo(int textureId, Duration position) async {
179-
return videoPlayers[textureId].seekTo(position);
180-
}
181-
182-
@override
183-
Future<Duration> getPosition(int textureId) async {
184-
videoPlayers[textureId].sendBufferingUpdate();
185-
return videoPlayers[textureId].getPosition();
186-
}
187-
188-
@override
189-
Stream<VideoEvent> videoEventsFor(int textureId) {
190-
return videoPlayers[textureId].eventController.stream;
191-
}
192-
193-
@override
194-
Widget buildView(int textureId) {
195-
return HtmlElementView(viewType: textureId.toString());
196-
}
197-
}

0 commit comments

Comments
 (0)