From 3cf9418f479220bc0668bc7f02ff908200a3fac9 Mon Sep 17 00:00:00 2001 From: zarzet Date: Mon, 13 Jul 2026 20:29:11 +0700 Subject: [PATCH] feat(ui): fluid bouncing scroll physics on capable devices --- lib/app.dart | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/app.dart b/lib/app.dart index 05e145ad..3735d911 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -78,6 +78,17 @@ Locale _resolveSupportedLocale( return _fallbackLocale(supportedLocales); } +/// iOS-style fluid scroll everywhere: momentum glide + bounce instead of the +/// Android clamping stop. Widgets that set explicit physics (queue filter +/// PageView, bottom sheets) are unaffected. +class _FluidScrollBehavior extends MaterialScrollBehavior { + const _FluidScrollBehavior(); + + @override + ScrollPhysics getScrollPhysics(BuildContext context) => + const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()); +} + class SpotiFLACApp extends ConsumerWidget { final bool disableOverscrollEffects; @@ -89,7 +100,7 @@ class SpotiFLACApp extends ConsumerWidget { final localeString = ref.watch(settingsProvider.select((s) => s.locale)); final scrollBehavior = disableOverscrollEffects ? const MaterialScrollBehavior().copyWith(overscroll: false) - : null; + : const _FluidScrollBehavior(); Locale? locale; if (localeString != 'system' && localeString.isNotEmpty) {