diff --git a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart index 2e17f43c24a..82b40813711 100644 --- a/packages/flutter/lib/src/widgets/single_child_scroll_view.dart +++ b/packages/flutter/lib/src/widgets/single_child_scroll_view.dart @@ -276,7 +276,9 @@ class SingleChildScrollView extends StatelessWidget { child: scrollable, onNotification: (ScrollUpdateNotification notification) { final FocusScopeNode currentScope = FocusScope.of(context); - if (!currentScope.hasPrimaryFocus && currentScope.hasFocus) { + if (notification.dragDetails != null && + !currentScope.hasPrimaryFocus && + currentScope.hasFocus) { FocusManager.instance.primaryFocus?.unfocus(); } return false; diff --git a/packages/flutter/test/widgets/single_child_scroll_view_test.dart b/packages/flutter/test/widgets/single_child_scroll_view_test.dart index d84f52fd6ea..aeba59889ba 100644 --- a/packages/flutter/test/widgets/single_child_scroll_view_test.dart +++ b/packages/flutter/test/widgets/single_child_scroll_view_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -1120,47 +1118,4 @@ void main() { expect(tester.testTextInput.isVisible, isFalse); }); - - testWidgets('keyboardDismissBehavior on scroll without a drag test', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: Scaffold( - body: SizedBox( - height: 1000, - child: SingleChildScrollView( - keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, - child: Column( - children: [ - Autocomplete( - optionsBuilder: (TextEditingValue textEditingValue) { - return['aardvark', 'bobcat', 'chameleon'] - .where((String option) { - return option.contains(textEditingValue.text.toLowerCase()); - }); - }, - ), - const SizedBox(height: 2000), - ], - ), - ), - ), - ), - )); - - await tester.tap(find.byType(Autocomplete)); - await tester.pump(); - - await tester.enterText(find.byType(RawAutocomplete),'aard'); - await tester.pump(); - - expect(find.text('aardvark'), findsOneWidget); - - final TestPointer testPointer = TestPointer(1, PointerDeviceKind.mouse); - final Offset scrollStart = tester.getCenter(find.byType(SingleChildScrollView)); - - testPointer.hover(scrollStart); - await tester.sendEventToBinding(testPointer.scroll(Offset(scrollStart.dx, scrollStart.dy - 100))); - await tester.pumpAndSettle(); - - expect(find.text('aardvark'), findsNothing); - }); }