flutter 如何获得抖动中的RenderObject的半径?

kjthegm6  于 2023-04-07  发布在  Flutter
关注(0)|答案(2)|浏览(87)

我有屏幕显示展示屏幕组件。现在这些组件可以是任何东西,我想动态地找到小部件的半径。我将传递给一个自定义画家绘制半径的形状。
我试过在RenderObject中查找任何有用的东西,但没有找到任何东西。
有没有什么方法可以提供类似下面的RRect对象?

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

wgx48brx1#

在您将RenderObject替换为其他类型的RenderObject或从小部件树中删除关联的小部件之前,RenderObject不会被释放。

m1m5dgzv

m1m5dgzv2#

我通过使用context.widget解决了这个问题

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;
}

相关问题