【问题标题】:How to check visibility of a Flutter widget even when covered by another即使被另一个小部件覆盖,如何检查 Flutter 小部件的可见性
【发布时间】:2021-03-17 11:58:51
【问题描述】:

我正在尝试找到一种方法来检查 Flutter 小部件在屏幕外或被其他小部件(例如 Drawer、Dialog 或 BottomSheet)遮挡时的可见性。

visibility_detector 有助于检查它是否在屏幕上,但不适用于第二个用例(已知限制)。

是否有一个较低级别的 api 可用于检查小部件是否对用户真正可见?

我的用例:当外部事件发生时,我正在向 Overlay 添加一个小部件(类似于 Tooltip,但不是长按)。例如,如果用户打开抽屉,小部件将出现在顶部。我想检测到孩子不可见并延迟或取消操作。

【问题讨论】:

    标签: flutter dart flutter-layout


    【解决方案1】:

    我了解您的问题吗?

    • 您有一个想要始终在顶部的小部件?
    • 您希望用户先与该小部件进行交互,然后再进行其他操作?

    使用设计模式使编码更容易,您的用户会感谢您。

    您可以使用showGeneralDialogshowDialog 函数在其他小部件的顶部显示Dialog。因为对话框是许多应用程序中使用的一种设计模式,所以用户已经知道如何使用它们。

    使用显式状态定义应用行为。

    很难从渲染的 UI 中推导出应用行为,并非所有设备的大小和形状都相同。这意味着您应该尝试编写一个描述您的情况的变量,然后编写代码您需要使该变量的值正确。听起来你想要一个像bool overlayIsShowing 这样的变量。

    【讨论】:

    • 不,我正在尝试做类似Popover的事情
    • 明白。这个概念的颤振词是Tooltip。工具提示是支持和内置的,因为它们是 Material Design 的一部分。每当您的 UI 与 Material Design 不同时,都会面临挑战。
    • 我确实找到了一个看起来与您需要的相似的包。 pub.dev/packages/simple_tooltip
    • Flutter Tooltip 仅用于在长按或鼠标悬停时显示标签。 simple_tooltip 小部件并不是我要寻找的风格,我在上面发布的原始问题仍然适用。
    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2019-05-21
    • 2022-01-16
    • 2019-11-11
    • 2021-12-09
    • 2022-01-25
    相关资源
    最近更新 更多