@@ -18,6 +18,7 @@ import 'package:flutter/services.dart' show LogicalKeyboardKey;
1818import 'framework.dart' ;
1919import 'overscroll_indicator.dart' ;
2020import 'scroll_physics.dart' ;
21+ import 'scroll_view.dart' ;
2122import 'scrollable.dart' ;
2223import 'scrollable_helpers.dart' ;
2324import 'scrollbar.dart' ;
@@ -89,6 +90,7 @@ class ScrollBehavior {
8990 Set <LogicalKeyboardKey >? pointerAxisModifiers,
9091 ScrollPhysics ? physics,
9192 TargetPlatform ? platform,
93+ ScrollViewKeyboardDismissBehavior ? keyboardDismissBehavior,
9294 }) {
9395 return _WrappedScrollBehavior (
9496 delegate: this ,
@@ -99,6 +101,7 @@ class ScrollBehavior {
99101 pointerAxisModifiers: pointerAxisModifiers,
100102 physics: physics,
101103 platform: platform,
104+ keyboardDismissBehavior: keyboardDismissBehavior,
102105 );
103106 }
104107
@@ -264,6 +267,12 @@ class ScrollBehavior {
264267 /// method returns false, the rebuilds might be optimized away.
265268 bool shouldNotify (covariant ScrollBehavior oldDelegate) => false ;
266269
270+ /// The default keyboard dismissal behavior for [ScrollView] widgets.
271+ ///
272+ /// Defaults to [ScrollViewKeyboardDismissBehavior.manual] .
273+ ScrollViewKeyboardDismissBehavior getKeyboardDismissBehavior (BuildContext context) =>
274+ ScrollViewKeyboardDismissBehavior .manual;
275+
267276 @override
268277 String toString () => objectRuntimeType (this , 'ScrollBehavior' );
269278}
@@ -278,6 +287,7 @@ class _WrappedScrollBehavior implements ScrollBehavior {
278287 Set <LogicalKeyboardKey >? pointerAxisModifiers,
279288 this .physics,
280289 this .platform,
290+ this .keyboardDismissBehavior,
281291 }) : _dragDevices = dragDevices,
282292 _pointerAxisModifiers = pointerAxisModifiers;
283293
@@ -286,6 +296,7 @@ class _WrappedScrollBehavior implements ScrollBehavior {
286296 final bool overscroll;
287297 final ScrollPhysics ? physics;
288298 final TargetPlatform ? platform;
299+ final ScrollViewKeyboardDismissBehavior ? keyboardDismissBehavior;
289300 final Set <PointerDeviceKind >? _dragDevices;
290301 final MultitouchDragStrategy ? multitouchDragStrategy;
291302 final Set <LogicalKeyboardKey >? _pointerAxisModifiers;
@@ -327,6 +338,7 @@ class _WrappedScrollBehavior implements ScrollBehavior {
327338 Set <LogicalKeyboardKey >? pointerAxisModifiers,
328339 ScrollPhysics ? physics,
329340 TargetPlatform ? platform,
341+ ScrollViewKeyboardDismissBehavior ? keyboardDismissBehavior,
330342 }) {
331343 return delegate.copyWith (
332344 scrollbars: scrollbars ?? this .scrollbars,
@@ -336,6 +348,7 @@ class _WrappedScrollBehavior implements ScrollBehavior {
336348 pointerAxisModifiers: pointerAxisModifiers ?? this .pointerAxisModifiers,
337349 physics: physics ?? this .physics,
338350 platform: platform ?? this .platform,
351+ keyboardDismissBehavior: keyboardDismissBehavior ?? this .keyboardDismissBehavior,
339352 );
340353 }
341354
@@ -349,6 +362,11 @@ class _WrappedScrollBehavior implements ScrollBehavior {
349362 return physics ?? delegate.getScrollPhysics (context);
350363 }
351364
365+ @override
366+ ScrollViewKeyboardDismissBehavior getKeyboardDismissBehavior (BuildContext context) {
367+ return keyboardDismissBehavior ?? delegate.getKeyboardDismissBehavior (context);
368+ }
369+
352370 @override
353371 bool shouldNotify (_WrappedScrollBehavior oldDelegate) {
354372 return oldDelegate.delegate.runtimeType != delegate.runtimeType ||
0 commit comments