diff --git a/packages/stream_chat_flutter/lib/src/anchored_overlay.dart b/packages/stream_chat_flutter/lib/src/anchored_overlay.dart index ef06cda0..9a7f45ee 100644 --- a/packages/stream_chat_flutter/lib/src/anchored_overlay.dart +++ b/packages/stream_chat_flutter/lib/src/anchored_overlay.dart @@ -98,14 +98,22 @@ class _OverlayBuilderState extends State } } + EdgeInsets? _previousInsets; + @override void didChangeMetrics() { super.didChangeMetrics(); - SchedulerBinding.instance!.addPostFrameCallback((_) { - hideOverlay(); - syncWidgetAndOverlay(); - }); + final newInsets = MediaQuery.of(context).viewPadding; + + if (newInsets.bottom != _previousInsets?.bottom) { + WidgetsBinding.instance!.addPostFrameCallback((_) { + hideOverlay(); + syncWidgetAndOverlay(); + }); + + _previousInsets = newInsets; + } } @override diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 6257a2c8..837e88c4 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -470,7 +470,7 @@ class MessageInputState extends State { overlayOptions: [ OverlayOption( overlayBuilder: (context, offset) => CenterAbout( - position: Offset(offset.dx, offset.dy), + position: offset, child: _buildMentionsOverlayEntry(), ), showOverlay: _showMentionsOverlay, @@ -478,7 +478,7 @@ class MessageInputState extends State { OverlayOption( showOverlay: _showCommandsOverlay, overlayBuilder: (context, offset) => CenterAbout( - position: Offset(offset.dx, offset.dy), + position: offset, child: _buildCommandsOverlayEntry(), ), ), @@ -493,10 +493,11 @@ class MessageInputState extends State { ) .contains(':'), overlayBuilder: (context, offset) => CenterAbout( - position: Offset(offset.dx, offset.dy), + position: offset, child: _buildEmojiOverlay(), ), ), + ...widget.customOverlays, ], child: child, );