Flutter 将 RenderObject 转换为 RenderBox

Chr*_*ris 8 casting render dart drop-down-menu flutter

我正在尝试按照本教程创建一个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;
  }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我尝试添加一些!,?但它仍然不起作用。主要问题是findRenderObject返回RenderObject,但我需要它是RenderBox......知道这里出了什么问题吗?想不通..

Chr*_*ris 23

解决方案比我想象的更容易:

as只需像这样使用:

RenderBox renderBox =
    actionKey.currentContext!.findRenderObject()! as RenderBox;
Run Code Online (Sandbox Code Playgroud)