mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Create WidgetTester.ensureVisible(Finder) (#22620)
This is just a shorthand for Scrollable.ensureVisible(tester.element(finder)) Fixes #8185
This commit is contained in:
parent
d5777b6a9a
commit
7fbb5b9f32
@ -677,6 +677,12 @@ class WidgetTester extends WidgetController implements HitTestDispatcher, Ticker
|
|||||||
SemanticsHandle ensureSemantics() {
|
SemanticsHandle ensureSemantics() {
|
||||||
return binding.pipelineOwner.ensureSemantics();
|
return binding.pipelineOwner.ensureSemantics();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Given a widget `W` specified by [finder] and a [Scrollable] widget `S` in
|
||||||
|
/// its ancestry tree, this scrolls `S` so as to make `W` visible.
|
||||||
|
///
|
||||||
|
/// Shorthand for `Scrollable.ensureVisible(tester.element(finder))`
|
||||||
|
Future<void> ensureVisible(Finder finder) => Scrollable.ensureVisible(element(finder));
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef _TickerDisposeCallback = void Function(_TestTicker ticker);
|
typedef _TickerDisposeCallback = void Function(_TestTicker ticker);
|
||||||
|
@ -616,6 +616,30 @@ void main() {
|
|||||||
semanticsHandle.dispose();
|
semanticsHandle.dispose();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('ensureVisible', () {
|
||||||
|
testWidgets('scrolls to make widget visible', (WidgetTester tester) async {
|
||||||
|
await tester.pumpWidget(
|
||||||
|
MaterialApp(
|
||||||
|
home: Scaffold(
|
||||||
|
body: ListView.builder(
|
||||||
|
itemCount: 20,
|
||||||
|
shrinkWrap: true,
|
||||||
|
itemBuilder: (BuildContext context, int i) => ListTile(title: Text('Item $i')),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Make sure widget isn't on screen
|
||||||
|
expect(find.text('Item 15', skipOffstage: true), findsNothing);
|
||||||
|
|
||||||
|
await tester.ensureVisible(find.text('Item 15', skipOffstage: false));
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
|
||||||
|
expect(find.text('Item 15', skipOffstage: true), findsOneWidget);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class FakeMatcher extends AsyncMatcher {
|
class FakeMatcher extends AsyncMatcher {
|
||||||
|
Loading…
Reference in New Issue
Block a user