Unverified Commit 2130cf9c authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

DismissDirection.none will not prevent scrolling (#85152)

parent 9c0bd18c
...@@ -610,6 +610,12 @@ class _DismissibleState extends State<Dismissible> with TickerProviderStateMixin ...@@ -610,6 +610,12 @@ class _DismissibleState extends State<Dismissible> with TickerProviderStateMixin
content, content,
]); ]);
} }
// If the DismissDirection is none, we do not add drag gestures because the content
// cannot be dragged.
if (widget.direction == DismissDirection.none)
return content;
// We are not resizing but we may be being dragging in widget.direction. // We are not resizing but we may be being dragging in widget.direction.
return GestureDetector( return GestureDetector(
onHorizontalDragStart: _directionIsXAxis ? _handleDragStart : null, onHorizontalDragStart: _directionIsXAxis ? _handleDragStart : null,
......
...@@ -18,6 +18,7 @@ Widget buildTest({ ...@@ -18,6 +18,7 @@ Widget buildTest({
double? startToEndThreshold, double? startToEndThreshold,
TextDirection textDirection = TextDirection.ltr, TextDirection textDirection = TextDirection.ltr,
Future<bool?> Function(BuildContext context, DismissDirection direction)? confirmDismiss, Future<bool?> Function(BuildContext context, DismissDirection direction)? confirmDismiss,
ScrollController? controller,
}) { }) {
return Directionality( return Directionality(
textDirection: textDirection, textDirection: textDirection,
...@@ -57,10 +58,11 @@ Widget buildTest({ ...@@ -57,10 +58,11 @@ Widget buildTest({
return Container( return Container(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: ListView( child: ListView(
controller: controller,
dragStartBehavior: DragStartBehavior.down, dragStartBehavior: DragStartBehavior.down,
scrollDirection: scrollDirection, scrollDirection: scrollDirection,
itemExtent: itemExtent, itemExtent: itemExtent,
children: <int>[0, 1, 2, 3, 4] children: <int>[0, 1, 2, 3, 4, 5, 6, 7, 8]
.where((int i) => !dismissedItems.contains(i)) .where((int i) => !dismissedItems.contains(i))
.map<Widget>(buildDismissibleItem).toList(), .map<Widget>(buildDismissibleItem).toList(),
), ),
...@@ -873,4 +875,22 @@ void main() { ...@@ -873,4 +875,22 @@ void main() {
await dismissItem(tester, 0, gestureDirection: AxisDirection.down); await dismissItem(tester, 0, gestureDirection: AxisDirection.down);
expect(find.text('0'), findsOneWidget); expect(find.text('0'), findsOneWidget);
}); });
testWidgets('DismissDirection.none does not prevent scrolling', (WidgetTester tester) async {
dismissDirection = DismissDirection.none;
final ScrollController controller = ScrollController();
await tester.pumpWidget(buildTest(controller: controller));
expect(dismissedItems, isEmpty);
expect(controller.offset, 0.0);
await dismissItem(tester, 0, gestureDirection: AxisDirection.left);
expect(controller.offset, 0.0);
await dismissItem(tester, 0, gestureDirection: AxisDirection.right);
expect(controller.offset, 0.0);
await dismissItem(tester, 0, gestureDirection: AxisDirection.down);
expect(controller.offset, 0.0);
await dismissItem(tester, 0, gestureDirection: AxisDirection.up);
expect(controller.offset, 99.9);
});
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment