@@ -13,6 +13,7 @@ import 'package:ikaros/api/collection/EpisodeCollectionApi.dart';
1313import 'package:ikaros/api/dandanplay/DandanplayBangumiApi.dart' ;
1414import 'package:ikaros/api/dandanplay/DandanplayCommentApi.dart' ;
1515import 'package:ikaros/api/dandanplay/DandanplaySearchApi.dart' ;
16+ import 'package:ikaros/api/dandanplay/model/BangumiEpisode.dart' ;
1617import 'package:ikaros/api/dandanplay/model/CommentEpisode.dart' ;
1718import 'package:ikaros/api/dandanplay/model/CommentEpisodeIdResponse.dart' ;
1819import 'package:ikaros/api/dandanplay/model/IkarosDanmukuBangumiResponse.dart' ;
@@ -214,31 +215,32 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
214215 return ; // 自己新建的无三方同步平台ID关联的条目是不会请求弹幕的
215216 }
216217 var targetEpisodeId = - 1 ;
217- if (_syncs.isNotEmpty && _syncs.first.platform == SubjectSyncPlatform .BGM_TV ) {
218+ if (_syncs.isNotEmpty &&
219+ _syncs.first.platform == SubjectSyncPlatform .BGM_TV ) {
218220 var bgmtvSubjectId = _syncs.first.platformId;
219221
220222 IkarosDanmukuBangumiResponse ? bangumiRsp = await DandanplayBangumiApi ()
221223 .getBangumiDetailsByBgmtvSubjectId (bgmtvSubjectId);
222- if (bangumiRsp != null ) {
223- targetEpisodeId =
224- bangumiRsp.data.episodes.where ((ep)=> ep.episodeNumber == _episode.sequence.toString ())
225- .first.episodeId;
224+ if (bangumiRsp != null && bangumiRsp.data.episodes.isNotEmpty) {
225+ BangumiEpisode ? targetEpisode = bangumiRsp.data.episodes
226+ .where ((ep) => ep.episodeNumber == _episode.sequence.toInt ().toString ())
227+ .firstOrNull;
228+ targetEpisodeId = targetEpisode? .episodeId ?? - 1 ;
226229 }
227230 }
228231 if (targetEpisodeId == - 1 ) {
229232 IkarosDanmukuEpisodesResponse ? searchEpsResp = await DandanplaySearchApi ()
230233 .searchEpisodes (_subject! .name, _episode.sequence.toInt ().toString ());
231- if (searchEpsResp == null ||
232- searchEpsResp.animes.isEmpty) return ;
234+ if (searchEpsResp == null || searchEpsResp.animes.isEmpty) return ;
233235 SearchEpisodesAnime searchEpisodesAnime = searchEpsResp.animes.first;
234236 if (searchEpisodesAnime.episodes.isEmpty) return ;
235237 SearchEpisodeDetails searchEpisodeDetails =
236238 searchEpisodesAnime.episodes.first;
237239 targetEpisodeId = searchEpisodeDetails.episodeId;
238240 }
239241
240- CommentEpisodeIdResponse ? commentEpIdResp = await DandanplayCommentApi ()
241- .commentEpisodeId (targetEpisodeId, 1 );
242+ CommentEpisodeIdResponse ? commentEpIdResp =
243+ await DandanplayCommentApi () .commentEpisodeId (targetEpisodeId, 1 );
242244 if (commentEpIdResp == null || commentEpIdResp.count == 0 ) return ;
243245 _commentEpisodes.addAll (commentEpIdResp.comments);
244246
@@ -367,12 +369,16 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
367369 final exStyle = GetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE );
368370
369371 // 隐藏标题栏和任务栏
370- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE , style & ~ WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
371- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE , exStyle | WINDOW_EX_STYLE .WS_EX_TOPMOST );
372+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE ,
373+ style & ~ WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
374+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE ,
375+ exStyle | WINDOW_EX_STYLE .WS_EX_TOPMOST );
372376
373377 // 获取屏幕尺寸
374- final screenWidth = GetSystemMetrics (SYSTEM_METRICS_INDEX .SM_CXSCREEN ); // 屏幕宽度
375- final screenHeight = GetSystemMetrics (SYSTEM_METRICS_INDEX .SM_CYSCREEN ); // 屏幕高度
378+ final screenWidth =
379+ GetSystemMetrics (SYSTEM_METRICS_INDEX .SM_CXSCREEN ); // 屏幕宽度
380+ final screenHeight =
381+ GetSystemMetrics (SYSTEM_METRICS_INDEX .SM_CYSCREEN ); // 屏幕高度
376382
377383 // 计算窗口右下角的位置
378384 final x = screenWidth - smallWindowDevicePixelWidth;
@@ -392,7 +398,8 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
392398 // 指定的窗口宽度
393399 smallWindowDevicePixelHeight,
394400 // 指定的窗口高度
395- SET_WINDOW_POS_FLAGS .SWP_NOACTIVATE | SET_WINDOW_POS_FLAGS .SWP_SHOWWINDOW , // 不激活窗口,显示窗口
401+ SET_WINDOW_POS_FLAGS .SWP_NOACTIVATE |
402+ SET_WINDOW_POS_FLAGS .SWP_SHOWWINDOW , // 不激活窗口,显示窗口
396403 );
397404 }
398405
@@ -420,8 +427,10 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
420427 final exStyle = GetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE );
421428
422429 // 隐藏标题栏和任务栏
423- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE , style & ~ WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
424- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE , exStyle | WINDOW_EX_STYLE .WS_EX_TOPMOST );
430+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE ,
431+ style & ~ WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
432+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE ,
433+ exStyle | WINDOW_EX_STYLE .WS_EX_TOPMOST );
425434
426435 // 设置窗口位置和大小,覆盖整个屏幕
427436 SetWindowPos (
@@ -443,8 +452,10 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
443452 final exStyle = GetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE );
444453
445454 // 还原标题栏和任务栏
446- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE , style | WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
447- SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE , exStyle & ~ WINDOW_EX_STYLE .WS_EX_TOPMOST );
455+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_STYLE ,
456+ style | WINDOW_STYLE .WS_OVERLAPPEDWINDOW );
457+ SetWindowLongPtr (hWnd, WINDOW_LONG_PTR_INDEX .GWL_EXSTYLE ,
458+ exStyle & ~ WINDOW_EX_STYLE .WS_EX_TOPMOST );
448459
449460 // 还原窗口位置和大小
450461 SetWindowPos (
@@ -566,7 +577,8 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
566577 if (! Platform .isWindows) return ;
567578 final ptr = calloc <Pointer <Utf16 >>();
568579 final guid = calloc <GUID >()..ref.setGUID (FOLDERID_Pictures );
569- final hr = SHGetKnownFolderPath (guid, KNOWN_FOLDER_FLAG .KF_FLAG_DEFAULT , NULL , ptr);
580+ final hr = SHGetKnownFolderPath (
581+ guid, KNOWN_FOLDER_FLAG .KF_FLAG_DEFAULT , NULL , ptr);
570582
571583 String path;
572584 if (hr == S_OK ) {
@@ -777,7 +789,9 @@ class DesktopVideoPlayerState extends State<DesktopVideoPlayer>
777789 offsetY.toInt () + smallWindowDevicePixelHeight,
778790 smallWindowDevicePixelWidth,
779791 smallWindowDevicePixelHeight,
780- SET_WINDOW_POS_FLAGS .SWP_NOZORDER | SET_WINDOW_POS_FLAGS .SWP_NOSIZE | SET_WINDOW_POS_FLAGS .SWP_NOREDRAW );
792+ SET_WINDOW_POS_FLAGS .SWP_NOZORDER |
793+ SET_WINDOW_POS_FLAGS .SWP_NOSIZE |
794+ SET_WINDOW_POS_FLAGS .SWP_NOREDRAW );
781795 },
782796 onTap: () {
783797 if (_player.playback.isPlaying) {
0 commit comments