From 54ef030ab800317ecfda10e0e2ec91cf7e4bf495 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Fri, 15 Jan 2021 16:15:52 -0800 Subject: [PATCH] Revert "Improve the ScrollBar behavior when nested (#71843)" (#74088) This reverts commit 99daddc2c07840f06ee7fff1d4c11675bfe97a36. --- .../flutter/lib/src/cupertino/scrollbar.dart | 2 - .../flutter/lib/src/material/scrollbar.dart | 2 - .../flutter/lib/src/widgets/scrollbar.dart | 15 ----- .../flutter/test/widgets/scrollbar_test.dart | 63 ------------------- 4 files changed, 82 deletions(-) diff --git a/packages/flutter/lib/src/cupertino/scrollbar.dart b/packages/flutter/lib/src/cupertino/scrollbar.dart index 13de5c93a92..ba07555318e 100644 --- a/packages/flutter/lib/src/cupertino/scrollbar.dart +++ b/packages/flutter/lib/src/cupertino/scrollbar.dart @@ -61,7 +61,6 @@ class CupertinoScrollbar extends RawScrollbar { this.thicknessWhileDragging = defaultThicknessWhileDragging, Radius radius = defaultRadius, this.radiusWhileDragging = defaultRadiusWhileDragging, - ScrollNotificationPredicate? notificationPredicate, }) : assert(thickness != null), assert(thickness < double.infinity), assert(thicknessWhileDragging != null), @@ -78,7 +77,6 @@ class CupertinoScrollbar extends RawScrollbar { fadeDuration: _kScrollbarFadeDuration, timeToFade: _kScrollbarTimeToFade, pressDuration: const Duration(milliseconds: 100), - notificationPredicate: notificationPredicate ?? defaultScrollNotificationPredicate, ); /// Default value for [thickness] if it's not specified in [CupertinoScrollbar]. diff --git a/packages/flutter/lib/src/material/scrollbar.dart b/packages/flutter/lib/src/material/scrollbar.dart index 70c7b1e80bd..47fc343dd34 100644 --- a/packages/flutter/lib/src/material/scrollbar.dart +++ b/packages/flutter/lib/src/material/scrollbar.dart @@ -153,7 +153,6 @@ class _MaterialScrollbar extends RawScrollbar { this.hoverThickness, double? thickness, Radius? radius, - ScrollNotificationPredicate? notificationPredicate, }) : super( key: key, child: child, @@ -164,7 +163,6 @@ class _MaterialScrollbar extends RawScrollbar { fadeDuration: _kScrollbarFadeDuration, timeToFade: _kScrollbarTimeToFade, pressDuration: Duration.zero, - notificationPredicate: notificationPredicate ?? defaultScrollNotificationPredicate, ); final bool? showTrackOnHover; diff --git a/packages/flutter/lib/src/widgets/scrollbar.dart b/packages/flutter/lib/src/widgets/scrollbar.dart index 2fcadf2bdb1..d7831d0df94 100644 --- a/packages/flutter/lib/src/widgets/scrollbar.dart +++ b/packages/flutter/lib/src/widgets/scrollbar.dart @@ -565,10 +565,6 @@ class ScrollbarPainter extends ChangeNotifier implements CustomPainter { /// visible without the fade animation. This requires that a [ScrollController] /// is provided to [controller], or that the [PrimaryScrollController] is available. /// -/// If the scrollbar is wrapped around multiple [ScrollView]s, it only responds to -/// the nearest scrollView and shows the corresponding scrollbar thumb by default. -/// Set [notificationPredicate] to something else for more complicated behaviors. -/// /// Scrollbars are interactive and will also use the [PrimaryScrollController] if /// a [controller] is not set. Scrollbar thumbs can be dragged along the main axis /// of the [ScrollView] to change the [ScrollPosition]. Tapping along the track @@ -611,7 +607,6 @@ class RawScrollbar extends StatefulWidget { this.fadeDuration = _kScrollbarFadeDuration, this.timeToFade = _kScrollbarTimeToFade, this.pressDuration = Duration.zero, - this.notificationPredicate = defaultScrollNotificationPredicate, }) : assert(child != null), assert(fadeDuration != null), assert(timeToFade != null), @@ -772,14 +767,6 @@ class RawScrollbar extends StatefulWidget { /// Cannot be null, defaults to [Duration.zero]. final Duration pressDuration; - /// A check that specifies whether a [ScrollNotification] should be - /// handled by this widget. - /// - /// By default, checks whether `notification.depth == 0`. That means if the - /// scrollbar is wrapped around multiple [ScrollView]s, it only responds to the - /// nearest scrollView and shows the corresponding scrollbar thumb. - final ScrollNotificationPredicate notificationPredicate; - @override RawScrollbarState createState() => RawScrollbarState(); } @@ -1044,8 +1031,6 @@ class RawScrollbarState extends State with TickerProv } bool _handleScrollNotification(ScrollNotification notification) { - if (!widget.notificationPredicate(notification)) - return false; final ScrollMetrics metrics = notification.metrics; if (metrics.maxScrollExtent <= metrics.minScrollExtent) diff --git a/packages/flutter/test/widgets/scrollbar_test.dart b/packages/flutter/test/widgets/scrollbar_test.dart index befe8931e90..0b33c60f358 100644 --- a/packages/flutter/test/widgets/scrollbar_test.dart +++ b/packages/flutter/test/widgets/scrollbar_test.dart @@ -804,67 +804,4 @@ void main() { ), ); }); - - // Regression test for https://github.com/flutter/flutter/issues/66444 - testWidgets("Scrollbar doesn't show when scroll the inner scrollable widget", (WidgetTester tester) async { - final GlobalKey key1 = GlobalKey(); - final GlobalKey key2 = GlobalKey(); - final GlobalKey outerKey = GlobalKey(); - final GlobalKey innerKey = GlobalKey(); - await tester.pumpWidget( - Directionality( - textDirection: TextDirection.ltr, - child: MediaQuery( - data: const MediaQueryData(), - child: RawScrollbar( - key: key2, - thumbColor: const Color(0x11111111), - child: SingleChildScrollView( - key: outerKey, - child: SizedBox( - height: 1000.0, - width: double.infinity, - child: Column( - children: [ - RawScrollbar( - key: key1, - thumbColor: const Color(0x22222222), - child: SizedBox( - height: 300.0, - width: double.infinity, - child: SingleChildScrollView( - key: innerKey, - child: const SizedBox( - key: Key('Inner scrollable'), - height: 1000.0, - width: double.infinity, - ), - ), - ), - ), - ], - ), - ), - ), - ), - ), - ), - ); - - // Drag the inner scrollable widget. - await tester.drag(find.byKey(innerKey), const Offset(0.0, -25.0)); - await tester.pump(); - // Scrollbar fully showing. - await tester.pump(const Duration(milliseconds: 500)); - - expect( - tester.renderObject(find.byKey(key2)), - paintsExactlyCountTimes(#drawRect, 2), // Each bar will call [drawRect] twice. - ); - - expect( - tester.renderObject(find.byKey(key1)), - paintsExactlyCountTimes(#drawRect, 2), - ); - }); }