gpt4 book ai didi

flutter - 在屏幕外构建小部件

转载 作者:IT老高 更新时间:2023-10-28 12:40:09 25 4
gpt4 key购买 nike

我需要构建一个小部件来获取它的位图。我不在乎小部件是否在屏幕上。

所以我的问题是:我可以在不使用屏幕 View 层次结构的情况下以某种方式“在侧面”构建小部件吗?

我没有找到办法。因此,如果这不可能,我可以在屏幕上构建小部件,但实际上不显示它。我试过 Visibility 但这会使 RenderObject 为空。使用 Offstage 在断言上调用 toImage() 时会失败:Failed assertion: line 2752 pos 12: '!debugNeedsPaint': is not true.

最佳答案

编辑:看起来这在最新版本的 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

关于flutter - 在屏幕外构建小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com