From a3ecf59fae27eef4693b9164b565e0a900ce58aa Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 9 Apr 2025 15:24:47 +0800 Subject: [PATCH] opt: medialist page Signed-off-by: bggRGjQaUbCoE --- .../common/common_collapse_slide_page.dart | 16 ++++++++----- .../detail/widgets/media_list_panel.dart | 23 ++++++++++++++----- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lib/pages/common/common_collapse_slide_page.dart b/lib/pages/common/common_collapse_slide_page.dart index 1bf7c26e..68482e5a 100644 --- a/lib/pages/common/common_collapse_slide_page.dart +++ b/lib/pages/common/common_collapse_slide_page.dart @@ -7,23 +7,27 @@ abstract class CommonCollapseSlidePage extends CommonSlidePage { abstract class CommonCollapseSlidePageState extends CommonSlidePageState { - late bool _isInit = true; + late bool isInit = true; - @override - void initState() { - super.initState(); + void init() { WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) { setState(() { - _isInit = false; + isInit = false; }); } }); } + @override + void initState() { + super.initState(); + init(); + } + @override Widget build(BuildContext context) { - if (_isInit) { + if (isInit) { return CustomScrollView( physics: const NeverScrollableScrollPhysics(), ); diff --git a/lib/pages/video/detail/widgets/media_list_panel.dart b/lib/pages/video/detail/widgets/media_list_panel.dart index 5a93496e..0b1e6c66 100644 --- a/lib/pages/video/detail/widgets/media_list_panel.dart +++ b/lib/pages/video/detail/widgets/media_list_panel.dart @@ -55,13 +55,24 @@ class _MediaListPanelState void initState() { super.initState(); desc = widget.desc.obs; + } + + @override + void init() { WidgetsBinding.instance.addPostFrameCallback((_) { - int index = - widget.mediaList.indexWhere((item) => item.bvid == widget.getBvId()); - if (index != -1 && index != 0) { - try { - _scrollController.jumpTo(index: index); - } catch (_) {} + if (mounted) { + int index = widget.mediaList + .indexWhere((item) => item.bvid == widget.getBvId()); + if (index > 0) { + WidgetsBinding.instance.addPostFrameCallback((_) { + try { + _scrollController.jumpTo(index: index); + } catch (_) {} + }); + } + setState(() { + isInit = false; + }); } }); }