mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
[showModalBottomSheet] fix: showModalBottomSheet does not move along keyboard (#71636)
This commit is contained in:
parent
6a2dfa9f4f
commit
45cf27923a
|
@ -375,21 +375,24 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
|
|||
|
||||
return AnimatedBuilder(
|
||||
animation: widget.route!.animation!,
|
||||
child: BottomSheet(
|
||||
animationController: widget.route!._animationController,
|
||||
onClosing: () {
|
||||
if (widget.route!.isCurrent) {
|
||||
Navigator.pop(context);
|
||||
}
|
||||
},
|
||||
builder: widget.route!.builder!,
|
||||
backgroundColor: widget.backgroundColor,
|
||||
elevation: widget.elevation,
|
||||
shape: widget.shape,
|
||||
clipBehavior: widget.clipBehavior,
|
||||
enableDrag: widget.enableDrag,
|
||||
onDragStart: handleDragStart,
|
||||
onDragEnd: handleDragEnd,
|
||||
child: Padding(
|
||||
padding: MediaQuery.of(context).viewInsets,
|
||||
child: BottomSheet(
|
||||
animationController: widget.route!._animationController,
|
||||
onClosing: () {
|
||||
if (widget.route!.isCurrent) {
|
||||
Navigator.pop(context);
|
||||
}
|
||||
},
|
||||
builder: widget.route!.builder!,
|
||||
backgroundColor: widget.backgroundColor,
|
||||
elevation: widget.elevation,
|
||||
shape: widget.shape,
|
||||
clipBehavior: widget.clipBehavior,
|
||||
enableDrag: widget.enableDrag,
|
||||
onDragStart: handleDragStart,
|
||||
onDragEnd: handleDragEnd,
|
||||
),
|
||||
),
|
||||
builder: (BuildContext context, Widget? child) {
|
||||
// Disable the initial animation when accessible navigation is on so
|
||||
|
|
|
@ -726,6 +726,41 @@ void main() {
|
|||
|
||||
expect(retrievedRouteSettings, routeSettings);
|
||||
});
|
||||
|
||||
testWidgets('showModalBottomSheet should move along on-screen keyboard',
|
||||
(WidgetTester tester) async {
|
||||
late BuildContext savedContext;
|
||||
|
||||
// Show a keyboard (simulate by space at the bottom of the screen).
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: MediaQuery(
|
||||
data: const MediaQueryData(viewInsets: EdgeInsets.only(bottom: 200)),
|
||||
child: Builder(
|
||||
builder: (BuildContext context) {
|
||||
savedContext = context;
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pump();
|
||||
expect(find.text('BottomSheet'), findsNothing);
|
||||
|
||||
showModalBottomSheet<void>(
|
||||
context: savedContext,
|
||||
builder: (BuildContext context) {
|
||||
return const Text('BottomSheet');
|
||||
},
|
||||
);
|
||||
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('BottomSheet'), findsOneWidget);
|
||||
expect(tester.getBottomLeft(find.text('BottomSheet')).dy, 600);
|
||||
});
|
||||
}
|
||||
|
||||
class _TestPage extends StatelessWidget {
|
||||
|
|
Loading…
Reference in a new issue