Flutter 将 RenderObject 转换为 RenderBox

Flutter cast RenderObject to RenderBox

我正在尝试按照此 tutorial 创建一个 DropDown。但是我不能复制他的代码,因为 Flutter 2.0 禁止它,因为我可以使用这些行:

  void findDropdownData() {
    RenderBox renderBox = actionKey.currentContext!.findRenderObject()!;
    height = renderBox.size.height;
    width = renderBox.size.width;
    Offset? offset = renderBox.localToGlobal(Offset.zero);
    xPosition = offset!.dx;
    yPosition = offset.dy;
  }

如您所见,我尝试添加一些 !?,但仍然无法正常工作。主要问题是 findRenderObject returns RenderObject 但我需要它是 RenderBox... 知道这里出了什么问题吗?想不通..

解决方案比我想象的要简单:

只需像这样使用as

RenderBox renderBox =
    actionKey.currentContext!.findRenderObject()! as RenderBox;

有时actionkey可能会显示错误,所以只需使用as

RenderBox renderBox = context.findRenderObject()! as RenderBox;