我有一个回调,当用户拖动一个RenderBox时会发生-回调被触发-RenderBox在MultiChildRenderObjectWidget中。
我需要改变孩子的位置,然后用markNeedsPaint()
标记它以重新绘制-但这是永远不会发生的。
这是从我的代码中截取的:
final RenderObject? renderObject = _myWidgetKey.currentContext?.findRenderObject();
renderObject?.visitChildren((child) {
if (child is RenderTimelineItem) {
child._position = 2;
child.markNeedsPaint();
renderObject.markNeedsPaint();
}
});
在调试器中,我看到_position
值更新为2,我还看到"NEEDS-PAINT"
Flag设置为child和renderObject。
是否有一个特定的功能,使重新绘制立即运行?
谢谢
编辑:
我想做的事情是,我想把这个从07:10开始的约会拖到第二个资源组。我正在编辑dynamic_timeline 0.1.2包。我已经在同一资源中实现了约会的水平拖动。当用户按下ctrl并开始拖动时,约会应该能够被向下拖动到下一个资源组。
1条答案
按热度按时间3zwjbxry1#
我知道了
在
RenderTimelineItem
的Dragcontroller
回调中,我必须将位置给RenderTimelineItem
及其父节点(DynamicTimelineParentData
),然后是markParentNeedsLayout()
-这里的例子: