如何在颤振中获得RenderObject的半径?

  • 本文关键字:RenderObject flutter
  • 更新时间 :
  • 英文 :


我有屏幕,其中显示展示屏幕组件。现在这些组件可以是任何东西,我想动态地找到小部件的半径。我将把它传递给一个自定义画家来绘制这个半径的形状。

我试着在RenderObject中找到任何有用的东西,但没有找到任何东西。

有什么方法可以提供类似下面的RRect对象吗?

final box = globalKey.currentContext!.findRenderObject() as RenderBox;
final rect = size & box.localToGlobal(Offset.zero);

一个RenderObject将不会被丢弃,除非你用另一个不同类型的RenderObject替换它,或者从小部件树中删除相关的小部件。

我通过使用context解决了这个问题。像这样的小部件,

double getRadius() {
BuildContext? context = key!.currentContext;
var parent = context?.widget;
if (parent is Parent) {
var gestureDetector = (parent).child;
if (gestureDetector is GestureDetector) {
var clipRRect = gestureDetector.child;
if (clipRRect is ClipRRect) {
return (clipRRect.borderRadius as BorderRadius).topRight.x;
}
}
}
return 0;
}