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