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;
我正在尝试按照此 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;