编辑:看起来这在最新版本的 Flutter 中出现了问题。不知道为什么,但我猜想 Flutter 现在会在确定覆盖层根本不可见时避免绘制。这个方法仍然可以使用,但是需要结合translate将其移出屏幕: https: //gist.github.com/itsJoKr/ce5ec57bd6dedf74d1737c1f39481913
有些人建议使用OverlayEntry,它看起来是最好的解决方案。
您可以将其放在OverlayEntry当前屏幕下方,使其不可见,并用maintainState: true它来构建。一个很大的优点是它更容易实现,因为它不与当前的小部件树混合。
OverlayState overlayState = Overlay.of(context);
OverlayEntry entry = OverlayEntry(builder: (context) {
return RepaintBoundary(key: key, child: yourWidget,); // Using RepaintBoundary to get RenderObject and convert to image
}, maintainState: true);
overlayState.insert(entry);
// doesn't work anymore
// overlayState.rearrange([entry], above: entry); // Didn't find how to insert it at the bottom of current overlays, so this should rearrange it so that our entry is at the bottom
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2408 次 |
| 最近记录: |