#flutter #dart #flutter-layout
#flutter #dart #flutter-layout
Вопрос:
Я пытаюсь найти способ проверить видимость виджета Flutter, когда он либо вне экрана, либо когда он скрыт другим, например, выдвижным ящиком, диалоговым окном или нижней таблицей.
visibility_detector помогает проверить, отображается ли он на экране или нет, но не работает со вторым вариантом использования (известное ограничение).
Есть ли API нижнего рычага, который я могу использовать, чтобы проверить, действительно ли виджет виден пользователю?
Мой вариант использования: я добавляю виджет в оверлей, когда происходит что-то внешнее (аналогично всплывающей подсказке, но не при длительном нажатии). Если пользователь откроет, например, ящик, виджет появится сверху. Я хочу обнаружить, что дочерний элемент не виден, и отложить или отменить действие.
Ответ №1:
Я понимаю вашу проблему?
- У вас есть виджет, который вы хотите всегда быть на вершине?
- Вы хотите, чтобы пользователь сначала взаимодействовал с этим виджетом, прежде чем выполнять другие действия?
Используйте шаблоны проектирования, чтобы упростить кодирование, ваши пользователи будут вам благодарны.
Вы можете отобразить диалоговое окно поверх других виджетов с функциями showGeneralDialog
или showDialog
. Поскольку диалоговые окна являются шаблоном проектирования, используемым во многих приложениях, пользователи уже будут знать, как их использовать.
Определите поведение приложения с явным состоянием.
Слишком сложно определить поведение приложения на основе отображаемого пользовательского интерфейса, не все устройства имеют одинаковый размер и форму.Это означает, что вы должны попытаться написать переменную, которая описывает вашу ситуацию, а затем написать код, необходимый для корректного определения значения этой переменной. Похоже, вам нужна переменная like bool overlayIsShowing
.
Комментарии:
1. Нет, я пытаюсь сделать что-то вроде всплывающего окна
2. Понятно. Слово Flutter для этой концепции — всплывающая подсказка . Всплывающие подсказки поддерживаются и встроены, потому что они являются частью Material Design. Каждый раз, когда ваш пользовательский интерфейс отличается от Material Design, ожидайте проблем.
3. Я нашел пакет, который кажется похожим на то, что вам нужно. pub.dev/packages/simple_tooltip
4. Всплывающая подсказка Flutter предназначена только для отображения метки при длительном нажатии или наведении курсора мыши. Виджет simple_tooltip — это не совсем то, что я ищу по стилю, и исходная проблема, которую я опубликовал выше, все еще применяется.