嗨,伙计们,我想实现Flutter弹出插件,我只是复制了代码,并粘贴到我的项目中弹出插件链接
https://pub.dev/packages/popover
但我得到这个错误当我点击popover功能
类型“RenderSliverList”不是类型转换中类型“RenderBox”的子类型
在调试模式下,它显示错误行为
final box = widget.context.findRenderObject() as RenderBox;
嗨,伙计们,我想实现Flutter弹出插件,我只是复制了代码,并粘贴到我的项目中弹出插件链接
https://pub.dev/packages/popover
但我得到这个错误当我点击popover功能
类型“RenderSliverList”不是类型转换中类型“RenderBox”的子类型
在调试模式下,它显示错误行为
final box = widget.context.findRenderObject() as RenderBox;
2条答案
按热度按时间lymgl2op1#
您正在使用
RenderSliverList
的context
(很可能类似于SliverListDelegate
上下文)。问题是这个上下文在滚动视图 * 内部 *,所以它的呈现对象不是
RenderBox
,而是RenderSliver
。这一点很重要,因为它们使用的约束不同,而这正是您想要的。
解决方案是使用不同的上下文,例如使用您的
build
方法之一,它应该可以工作。agxfikkp2#
这个问题似乎与另一个堆栈溢出问题有关,也是关于使用flutter popover包的问题。我有一个答案,我建议人们在这里看看答案:
类型“RenderSliverList”不是类型转换中类型“RenderBox”的子类型
基本上你需要把触发窗口小部件(button/textbutton/iconbutton等) Package 成一个类,这样窗口小部件的上下文将被弹出菜单项使用,使弹出菜单出现在触发按钮(窗口小部件)的点击点。
希望有帮助。