美文网首页
[flutter] overlay

[flutter] overlay

作者: 朱慢慢 | 来源:发表于2021-08-26 14:38 被阅读0次

1.介绍

[overlay]中可以包含小部件的位置。

使用[OverlayState.insert]或者[OverlayState.insertAll]将Overlay entries项插入到[Overlay]中。为了找到一个给定的[BuildContext]最近的overlay,使用[Overlay.of]的函数。

一个overlay entry一次最多可以包含一个overlay。要从overlay删除一个条目,在overlay entry上调用[remove]函数。

因为[Overlay]使用[Stack]布局,overlay entry可以使用[Positioned]和[AnimatedPositioned]在overlay中定位自己。

例如,[Draggable]使用[OverlayEntry]来显示拖动角色,在拖动开始后跟随用户的手指在屏幕上移动。当用户的手指移动时,draggable调用在overlay entry 上的 [markNeedsBuild],使其重建。在它的构建中,entry 包括一个[Positioned],用它的顶部和左侧属性确定位置给拖动的对象。当拖动结束时,[Draggable]从overlay entry 中移除条目,将拖动对象从视图中移除。

默认情况下,如果有一个完全[opaque]的条目在他之上,那么这个条目将不会被包含在widget trees中(overlay entry中的stateful widget将不会被实例化)。为了确保overlay entry即使不可见也能被构建,必须将[maintainState]设置为true。这样消耗比较多,所以要小心确保。特别是,如果将[maintainState]设置为true的overlay entry中的widget重复调用[State.setState],用户的电池将被耗尽。

[OverlayEntry]是一个[ChangeNotifier],当[builder]构建的小部件被挂载或卸载时,它会发出通知,它的确切状态可以通过[mounted]查询。

相关文章

网友评论

      本文标题:[flutter] overlay

      本文链接:https://www.haomeiwen.com/subject/uocuiltx.html