Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-01-11 11:07:11 +08:00
parent 00da3c4a0e
commit 09bd1edeb3
6 changed files with 28 additions and 15 deletions

View File

@@ -36,7 +36,7 @@ class BiliDownloadEntryInfo with MultiSelectData {
late String pageDirPath;
late String entryDirPath;
DownloadStatus status = .wait;
late DownloadStatus status = .wait;
int get cid => source?.cid ?? pageData!.cid;

View File

@@ -115,8 +115,8 @@ class _LiveRoomPageState extends State<LiveRoomPage>
}
await _liveRoomController.playerInit(autoplay: shouldPlay);
}
if (!mounted) return;
plPlayerController.addStatusLister(playerListener);
super.didPopNext();
}

View File

@@ -290,10 +290,10 @@ class _SavePanelState extends State<SavePanel> {
}
Future<void> _onSaveOrSharePic([bool isShare = false]) async {
if (!isShare && PlatformUtils.isMobile) {
if (mounted && !await ImageUtils.checkPermissionDependOnSdkInt()) {
return;
}
if (!isShare &&
PlatformUtils.isMobile &&
!await ImageUtils.checkPermissionDependOnSdkInt()) {
return;
}
SmartDialog.showLoading();
try {

View File

@@ -313,6 +313,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
} else {
await videoDetailController.playerInit(autoplay: true);
}
if (!mounted || !isShowing) return;
plPlayerController!
..addStatusLister(playerListener)
..addPositionListener(positionListener);
@@ -370,7 +371,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
@override
// 离开当前页面时
Future<void> didPushNext() async {
void didPushNext() {
if (Get.routing.route is HeroDialogRoute) {
videoDetailController.imageview = true;
return;
@@ -453,7 +454,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
videoDetailController.videoState.value is! Error) {
await videoDetailController.playerInit();
}
if (!mounted || !isShowing) return;
plPlayerController
?..addStatusLister(playerListener)
..addPositionListener(positionListener);

View File

@@ -1582,12 +1582,19 @@ class PlPlayerController {
}
}
void addPositionListener(Function(Duration position) listener) =>
_positionListeners.add(listener);
void addPositionListener(Function(Duration position) listener) {
if (_playerCount == 0) return;
_positionListeners.add(listener);
}
void removePositionListener(Function(Duration position) listener) =>
_positionListeners.remove(listener);
void addStatusLister(Function(PlayerStatus status) listener) =>
_statusListeners.add(listener);
void addStatusLister(Function(PlayerStatus status) listener) {
if (_playerCount == 0) return;
_statusListeners.add(listener);
}
void removeStatusLister(Function(PlayerStatus status) listener) =>
_statusListeners.remove(listener);

View File

@@ -128,7 +128,7 @@ abstract final class ImageUtils {
},
);
if (success) {
SmartDialog.showToast(' Live Photo 已保存 ');
SmartDialog.showToast(' 已保存 ');
} else {
SmartDialog.showToast('保存失败');
return false;
@@ -198,6 +198,7 @@ abstract final class ImageUtils {
}
});
final result = await Future.wait(futures, eagerError: true);
bool success = true;
if (PlatformUtils.isMobile) {
final delList = <String>[];
final saveList = <SaveFileData>[];
@@ -211,6 +212,8 @@ abstract final class ImageUtils {
androidRelativePath: _androidRelativePath,
),
);
} else {
success = false;
}
}
await SaverGallery.saveFiles(saveList, skipIfExists: false);
@@ -225,6 +228,8 @@ abstract final class ImageUtils {
fileName: res.name,
del: res.del,
);
} else {
success = false;
}
}
}
@@ -232,9 +237,9 @@ abstract final class ImageUtils {
SmartDialog.showToast('已取消下载');
return false;
} else {
SmartDialog.showToast('图片已保存');
SmartDialog.showToast(success ? ' 已保存 ' : '保存失败');
}
return true;
return success;
} catch (e) {
if (cancelToken?.isCancelled == true) {
SmartDialog.showToast('已取消下载');