diff --git a/lib/pages/common/common_page.dart b/lib/pages/common/common_page.dart index 0d4d26556..8bc7269b7 100644 --- a/lib/pages/common/common_page.dart +++ b/lib/pages/common/common_page.dart @@ -22,7 +22,7 @@ abstract class CommonPageState< Widget onBuild(Widget child) { if (_barOffset != null) { - return NotificationListener( + return NotificationListener( onNotification: onNotification, child: child, ); @@ -30,22 +30,29 @@ abstract class CommonPageState< return child; } - bool onNotification(ScrollUpdateNotification notification) { - if (!_mainController.useBottomNav) return false; - - final metrics = notification.metrics; - if (metrics.axis == .horizontal || - metrics.pixels < 0 || - notification.dragDetails == null) { - return false; - } - - final scrollDelta = notification.scrollDelta ?? 0.0; + void _updateOffset(double scrollDelta) { _barOffset!.value = clampDouble( _barOffset!.value + scrollDelta, 0.0, StyleString.topBarHeight, ); + } + + bool onNotification(ScrollNotification notification) { + if (!_mainController.useBottomNav) return false; + + if (notification.metrics.axis == .horizontal) return false; + + if (notification is ScrollUpdateNotification) { + if (notification.dragDetails == null) return false; + _updateOffset(notification.scrollDelta ?? 0.0); + return false; + } + + if (notification is OverscrollNotification) { + _updateOffset(notification.overscroll); + return false; + } return false; } diff --git a/lib/pages/dynamics_tab/view.dart b/lib/pages/dynamics_tab/view.dart index e70d9ffe4..89d1ce4e4 100644 --- a/lib/pages/dynamics_tab/view.dart +++ b/lib/pages/dynamics_tab/view.dart @@ -46,7 +46,7 @@ class _DynamicsTabPageState _mainController.selectedIndex.value == 0; @override - bool onNotification(ScrollUpdateNotification notification) { + bool onNotification(ScrollNotification notification) { if (checkPage) { return false; } diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index b6ee8ff23..fc718fc7f 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -45,7 +45,7 @@ class _MediaPageState extends CommonPageState _mainController.selectedIndex.value == 0; @override - bool onNotification(ScrollUpdateNotification notification) { + bool onNotification(ScrollNotification notification) { if (checkPage) { return false; }