Flutter 将 RenderObject 转换为 RenderBox

标签 flutter dart drop-down-menu casting render

我正在尝试关注此 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返回 RenderObject但我需要它是 RenderBox ...知道这里有什么问题吗?想不通。。

最佳答案

解决方案比我想象的要容易:
只需使用 as像这样:

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

关于Flutter 将 RenderObject 转换为 RenderBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67045440/

相关文章:

dart - Dart 属性结果需要缓存吗?

html - 如何使 Bootstrap 下拉菜单切换子项?

css - Bootstrap 中带有子菜单的可滚动下拉菜单

asp.net-mvc-3 - MVC 3 下拉列表: Cannot figure out 'System.Web.Mvc.SelectList' cannot be serialized

flutter - Firebase 使用电子邮件和密码登录 flutter

flutter pub 对于特定的包已经过时了?

android - DateTime.now().toUtc().difference 和 DateTime.now().difference 在 dart 中给出相同的结果

flutter - TextInputAction.next使键盘消失

xml - 如何从 XmlEvent 访问 XML 元素名称

android - 如何在 flutter 上制作按钮