|
@@ -27,26 +27,46 @@ class _IjkPlugin {
|
|
|
/// texture id
|
|
/// texture id
|
|
|
int textureId;
|
|
int textureId;
|
|
|
|
|
|
|
|
|
|
+ bool _isDisposed;
|
|
|
|
|
+
|
|
|
|
|
+ bool get isDisposed => _isDisposed;
|
|
|
|
|
+
|
|
|
_IjkPlugin(this.textureId);
|
|
_IjkPlugin(this.textureId);
|
|
|
|
|
|
|
|
Future<void> dispose() async {
|
|
Future<void> dispose() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ _isDisposed = true;
|
|
|
await _globalChannel.invokeMethod("dispose", {"id": textureId});
|
|
await _globalChannel.invokeMethod("dispose", {"id": textureId});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> play() async {
|
|
Future<void> play() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("play");
|
|
await channel.invokeMethod("play");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> pause() async {
|
|
Future<void> pause() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("pause");
|
|
await channel.invokeMethod("pause");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> stop() async {
|
|
Future<void> stop() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("stop");
|
|
await channel.invokeMethod("stop");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> setNetworkDataSource(
|
|
Future<void> setNetworkDataSource(
|
|
|
{String uri, Map<String, String> headers = const {}}) async {
|
|
{String uri, Map<String, String> headers = const {}}) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
LogUtils.debug("id = $textureId net uri = $uri ,headers = $headers");
|
|
LogUtils.debug("id = $textureId net uri = $uri ,headers = $headers");
|
|
|
await channel.invokeMethod("setNetworkDataSource", <String, dynamic>{
|
|
await channel.invokeMethod("setNetworkDataSource", <String, dynamic>{
|
|
|
"uri": uri,
|
|
"uri": uri,
|
|
@@ -55,6 +75,9 @@ class _IjkPlugin {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> setAssetDataSource(String name, String package) async {
|
|
Future<void> setAssetDataSource(String name, String package) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
LogUtils.debug("id = $textureId asset name = $name package = $package");
|
|
LogUtils.debug("id = $textureId asset name = $name package = $package");
|
|
|
var params = <String, dynamic>{
|
|
var params = <String, dynamic>{
|
|
|
"name": name,
|
|
"name": name,
|
|
@@ -66,8 +89,11 @@ class _IjkPlugin {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> setFileDataSource(String path) async {
|
|
Future<void> setFileDataSource(String path) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
if (!File(path).existsSync()) {
|
|
if (!File(path).existsSync()) {
|
|
|
- return Error.fileNotExists;
|
|
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
await channel.invokeMethod("setFileDataSource", <String, dynamic>{
|
|
await channel.invokeMethod("setFileDataSource", <String, dynamic>{
|
|
|
"path": path,
|
|
"path": path,
|
|
@@ -76,6 +102,9 @@ class _IjkPlugin {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<Map<String, dynamic>> getInfo() async {
|
|
Future<Map<String, dynamic>> getInfo() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
try {
|
|
try {
|
|
|
var map = await channel.invokeMethod("getInfo");
|
|
var map = await channel.invokeMethod("getInfo");
|
|
|
if (map == null) {
|
|
if (map == null) {
|
|
@@ -89,6 +118,9 @@ class _IjkPlugin {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> seekTo(double target) async {
|
|
Future<void> seekTo(double target) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("seekTo", <String, dynamic>{
|
|
await channel.invokeMethod("seekTo", <String, dynamic>{
|
|
|
"target": target,
|
|
"target": target,
|
|
|
});
|
|
});
|
|
@@ -96,12 +128,18 @@ class _IjkPlugin {
|
|
|
|
|
|
|
|
///
|
|
///
|
|
|
Future<void> setVolume(int volume) async {
|
|
Future<void> setVolume(int volume) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("setVolume", <String, dynamic>{
|
|
await channel.invokeMethod("setVolume", <String, dynamic>{
|
|
|
"volume": volume,
|
|
"volume": volume,
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<Uint8List> screenShot() async {
|
|
Future<Uint8List> screenShot() async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
var result = await channel.invokeMethod("screenShot");
|
|
var result = await channel.invokeMethod("screenShot");
|
|
|
if (result == null) {
|
|
if (result == null) {
|
|
|
return null;
|
|
return null;
|
|
@@ -110,6 +148,9 @@ class _IjkPlugin {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Future<void> setSpeed(double speed) async {
|
|
Future<void> setSpeed(double speed) async {
|
|
|
|
|
+ if (isDisposed) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
await channel.invokeMethod("setSpeed", speed);
|
|
await channel.invokeMethod("setSpeed", speed);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|