diff --git a/docs/plans/PROGRESS.md b/docs/plans/PROGRESS.md index 814e5e0..d5589ab 100644 --- a/docs/plans/PROGRESS.md +++ b/docs/plans/PROGRESS.md @@ -1113,6 +1113,7 @@ $ flutter test - 一级分类未选 18/w400、选中 20/w700;二级 chips 间距 10、左右 8、15/w600,并以稳定 AnimatedContainer 切换。 - 首页内容区改为横向 PageView:点击与滑动共用 PageController,各 tab 保留纵向滚动位置。 +- PageController 与各 tab ScrollController 改为字段直接初始化,修复热重载后的 LateInitializationError。 - 四类卡片去底板/描边,封面统一 3:4、8 圆角、行距 10、封底标题间距 6;状态角标为右上角紧凑异形丝带。 - 标题下方恢复左对齐题材文字,使用 `|` 分隔、灰色小字,与封面状态角标保持独立。 - 首页搜索栏到一级、一级到二级、二级到网格间距为 8/8/10;非精选 tab 直接以 10 衔接网格。 diff --git a/lib/pages/home/widgets/home_feed_grid.dart b/lib/pages/home/widgets/home_feed_grid.dart index caa1574..70ec7d5 100644 --- a/lib/pages/home/widgets/home_feed_grid.dart +++ b/lib/pages/home/widgets/home_feed_grid.dart @@ -43,8 +43,10 @@ class HomeFeedGrid extends StatefulWidget { class _HomeFeedGridState extends State { HomePrimaryTab _selectedPrimary = HomePrimaryTab.featured; - late final PageController _pageController; - late final Map _scrollControllers; + final PageController _pageController = PageController(); + final Map _scrollControllers = { + for (final tab in HomePrimaryTab.values) tab: ScrollController(), + }; final Map _selectedTags = { for (final tab in HomePrimaryTab.values) tab: null, }; @@ -52,10 +54,11 @@ class _HomeFeedGridState extends State { @override void initState() { super.initState(); - _pageController = PageController(initialPage: _selectedPrimary.index); - _scrollControllers = { - for (final tab in HomePrimaryTab.values) tab: ScrollController(), - }; + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted && _pageController.hasClients) { + _pageController.jumpToPage(_selectedPrimary.index); + } + }); } @override