问题标签 [renderbox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

flutter - 未放置导致 RenderBox 的卡片中的 ListTile

我正在尝试将 ListTile 放入卡片中,但出现渲染框错误

0 投票
0 回答
159 浏览

flutter - 如何在 Flutter 的屏幕上将 OverlayEntry 相对于 Widget 居中?

我正在努力弄清楚如何将一个小部件 相对于屏幕上的另一个 居中OverlayEntry(在一个内部 )。OverlayWidget

以下是我到目前为止的代码的简化版本(假设它是 a StatefulWidget ):

本质上,当点击图标本身时,创建并在下方放置Overlay一个工具提示Text(作为一个)。OverlayEntryMyIcon

问题是这行代码:renderedOffset.dx + (renderedSize.width / 2).

MyIcon我可以将工具提示中的文本从Text.

为了使其居中,我需要像这样定位它:renderedOffset.dx + (renderedSize.width / 2) - (renderedTextWidth/2),但是它Text是动态的,我看不出有什么办法知道和解释它的宽度(在示例中,renderedTextWidth)。

我知道TooltipFlutter 中已经有一个很好的小部件可以简化我的生活。不幸的是,一些要求(独立于手头的问题)不允许我使用它。所以我必须想出一些定制的东西。

这大约是我最终的结果: 我希望红线或多或少垂直对齐

大家有没有遇到过这样的问题,或者对类似的事情有一些经验?您对如何处理/解决问题有任何提示吗?

感谢您的任何帮助。

0 投票
0 回答
56 浏览

flutter - Flutter:如何在特定的孩子处停止图像过滤器(颜色过滤器/油漆过滤器)?

我想将 ImageFilter 应用于 ListView 以便所有孩子都受到影响并且所有孩子都会相互影响混合颜色。(这就是为什么将过滤器应用于子项而不是列表视图不起作用的原因)。

没关系。但是现在我需要在这些先前绘制的小部件之上放置另一个小部件(想想其颜色相互渗透的容器) - 不受祖先 imageFiltered 图像过滤器的影响。

我想要一个“拦截器”小部件,以便以前的过滤器仅适用于树中的这一点 - 没有进一步的下方。那可能吗?(顺便说一句,ListViews 子项周围的 BackdropFilter 也不起作用,尽管它可以在上游使用 ClipRect 停止,但它不会让子项“交互”/让过滤器混合子项。)

在阅读了很多关于画布和 CustomPaints 的内容后,我认为我需要按照这里的建议使用 RenderObject但我无法让它工作..我似乎仍然难以掌握画布和绘画的概念:可以过滤父小部件甚至被“停止”?

作为一种解决方法,我想象第二个同步且非交互式的 ListView 具有所需的效果作为主 ListView 的背景,其中包含所有不应被操纵的东西......

在写一个想法时想到:也许定制一个列表视图构建器来接受第二个 unaffectedChild?

非常感谢帮助。

tl;博士

0 投票
2 回答
28 浏览

flutter - 在再次调用 build 方法之前查找子小部件的宽度

我正在MyButton通过编写ElevatedButton将包含一个Text小部件作为子部件来创建一个自定义按钮小部件。它有一个布尔isLoading属性,用于配置要构建的 Button 的类型。当isLoading = true它将返回一个宽度与此加载按钮构建之前提供的文本宽度相同的灰色加载按钮时。我的问题是如何在 setState 调用或再次调用 build 方法之前获取widthText小部件,以便我可以使用它width来创建相同大小的加载按钮?

在使用子小部件构建默认按钮后,将始终调用加载按钮Text。(即isLoading仅当小部件不是最初重建时才为真)。

这是代码:

这是我想做的演示,但按钮的大小isLoading = true现在是绝对的。

我检查了其他帖子和问题,但找不到有用的方法来解决我的用例。使用GlobalKey是一种解决方案,但不是推荐的方法,使用RenderObject我无法解决这个问题,因为在这种情况下,我们只能获得父级的固有高度和宽度。

我认为除了使用 GlobalKey 和 RenderObject 之外,可能还有其他方法可以做到这一点。

0 投票
0 回答
85 浏览

flutter - Flutter paint():这是合法的吗?在不同的上下文中渲染 Renderobject

我尝试将列表项的子项(某处)渲染到树中的不同位置(小部件);在下面的方法中,BlendMask“目标”小部件检查并绘制“源”小部件,这些小部件让它们自己GlobalKey存储在blendKeys. 这有点工作。而且我不太确定我是否会与框架抗争,或者只是遗漏了一些要点......

问题有两个:

  • 次要问题:这种方法在调试器中效果不佳。它编译并运行良好,但每次热重载(保存 fe)都会引发“无法找到非活动元素的 RenderObject()”。也许我错过了一些调试标志?

  • 真正的问题,这让我对这个想法提出质疑:如前所述,Source-Widget 位于 a 的子树的某个位置Scrollable(来自fe):当列表滚动时,如何ListView.build更新?-不访问列表scrollController?!我尝试通过s监听小部件的状态,但担心滚动没有更新。也许它只需要一个战略设置?*希望* :DÒffsetsrcChild.paint()WidgetsBindingObserverdidChangeMetricsSourceRepaintBoundery

无论如何,每一个提示都非常感谢。顺便说一句,这是这个问题的延伸,它本身延伸了这个......

0 投票
0 回答
22 浏览

flutter - 在运行时更新颤振小部件树

我正在为一个即将开始的项目进行研究。基本上,该应用程序让用户通过拖放一些小部件(如文本、堆栈、容器等)来创建设计。有点像可视化应用程序构建器。如何实现这样的功能。我的方法是在运行时更新和保存小部件树。但我不知道是否可以在运行时访问和修改小部件树。请我非常感谢您对如何完成的建议,更好的方法或我可以查看的项目/源代码。