Поскольку вы не поделились ни одним кодом, я могу только представить, как вы разработали свой пользовательский интерфейс. Если вы поделитесь кодом в Dartpad, возможно, некоторые из нас могут помочь.
OverlayEntry
можно удалить, используя метод remove
согласно документации здесь . Вы можете сделать это, когда обрабатываете щелчок в левом меню.
Для второй проблемы я не смог найти никакого рабочего решения. Я сомневаюсь, что это невозможно, потому что Overlay
- это виджет Stack
, который находится сверху всех страниц согласно документам здесь . Если вы посмотрите на код DropDownButton
, то он внутренне использует Navigator
для получения sh нового маршрута страницы, как показано здесь , который все еще находится ниже стека наложения, и, следовательно, я подозреваю, что вы можете достичь этого.
Тем не менее, вы, вероятно, не должны использовать Overlay
для этой цели. Вместо этого вам лучше использовать showMenu
функцию от флаттера, которая обеспечивает больше удобства и будет вести себя так, как вы ожидали в большинстве случаев. Позиционирование меню требует некоторой взлома с showMenu
, но достижимо.
Вы также можете проверить пакет flutter_portal , который имеет некоторые приятные функции. Но он все еще находится в стадии разработки.
PS: Для вдохновения вы можете проверить мой ответ в этом посте особенно подход showMenu .