diff --git a/packages/scrollable_positioned_list/lib/src/positioned_list.dart b/packages/scrollable_positioned_list/lib/src/positioned_list.dart index 5c6929e0..c34f0f83 100644 --- a/packages/scrollable_positioned_list/lib/src/positioned_list.dart +++ b/packages/scrollable_positioned_list/lib/src/positioned_list.dart @@ -44,6 +44,7 @@ class PositionedList extends StatefulWidget { this.addSemanticIndexes = true, this.addRepaintBoundaries = true, this.addAutomaticKeepAlives = true, + this.keyboardDismissBehavior, }) : assert(itemCount != null), assert(itemBuilder != null), assert((positionedIndex == 0) || (positionedIndex < itemCount)), @@ -132,6 +133,10 @@ class PositionedList extends StatefulWidget { /// See [SliverChildBuilderDelegate.addAutomaticKeepAlives]. final bool addAutomaticKeepAlives; + /// A representation of how a [ScrollView] should dismiss + /// the on-screen keyboard. + final ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior; + @override State createState() => _PositionedListState(); } @@ -177,6 +182,7 @@ class _PositionedListState extends State { physics: widget.physics, shrinkWrap: widget.shrinkWrap, semanticChildCount: widget.semanticChildCount ?? widget.itemCount, + keyboardDismissBehavior: widget.keyboardDismissBehavior, slivers: [ if (widget.positionedIndex > 0) SliverPadding( diff --git a/packages/scrollable_positioned_list/lib/src/scroll_view.dart b/packages/scrollable_positioned_list/lib/src/scroll_view.dart index 31acda40..8178901a 100644 --- a/packages/scrollable_positioned_list/lib/src/scroll_view.dart +++ b/packages/scrollable_positioned_list/lib/src/scroll_view.dart @@ -28,6 +28,7 @@ class UnboundedCustomScrollView extends CustomScrollView { List slivers = const [], int? semanticChildCount, DragStartBehavior dragStartBehavior = DragStartBehavior.start, + ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, }) : _shrinkWrap = shrinkWrap, _anchor = anchor, super( @@ -43,6 +44,8 @@ class UnboundedCustomScrollView extends CustomScrollView { semanticChildCount: semanticChildCount, dragStartBehavior: dragStartBehavior, slivers: slivers, + keyboardDismissBehavior: keyboardDismissBehavior ?? + ScrollViewKeyboardDismissBehavior.manual, ); // [CustomScrollView] enforces constraints on [CustomScrollView.anchor], so diff --git a/packages/scrollable_positioned_list/lib/src/scrollable_positioned_list.dart b/packages/scrollable_positioned_list/lib/src/scrollable_positioned_list.dart index 60045e9b..0797df4b 100644 --- a/packages/scrollable_positioned_list/lib/src/scrollable_positioned_list.dart +++ b/packages/scrollable_positioned_list/lib/src/scrollable_positioned_list.dart @@ -57,6 +57,7 @@ class ScrollablePositionedList extends StatefulWidget { this.addAutomaticKeepAlives = true, this.addRepaintBoundaries = true, this.minCacheExtent, + this.keyboardDismissBehavior, }) : assert(itemCount != null), assert(itemBuilder != null), itemPositionsNotifier = itemPositionsListener as ItemPositionsNotifier?, @@ -87,6 +88,7 @@ class ScrollablePositionedList extends StatefulWidget { this.addAutomaticKeepAlives = true, this.addRepaintBoundaries = true, this.minCacheExtent, + this.keyboardDismissBehavior, }) : assert(itemCount != null), assert(itemBuilder != null), assert(separatorBuilder != null), @@ -186,6 +188,10 @@ class ScrollablePositionedList extends StatefulWidget { /// cache extent. final double? minCacheExtent; + /// A representation of how a [ScrollView] should dismiss + /// the on-screen keyboard. + final ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior; + @override State createState() => _ScrollablePositionedListState(); } @@ -437,6 +443,7 @@ class _ScrollablePositionedListState extends State padding: widget.padding, addAutomaticKeepAlives: widget.addAutomaticKeepAlives, addRepaintBoundaries: widget.addRepaintBoundaries, + keyboardDismissBehavior: widget.keyboardDismissBehavior, ), ), ), @@ -467,6 +474,7 @@ class _ScrollablePositionedListState extends State padding: widget.padding, addAutomaticKeepAlives: widget.addAutomaticKeepAlives, addRepaintBoundaries: widget.addRepaintBoundaries, + keyboardDismissBehavior: widget.keyboardDismissBehavior, ), ), ),