flutter - Flutter context.findRenderObject() 返回 null
问题描述
我正在尝试根据小部件的大小做一些手势运动逻辑。
为了获得大小,我在构建方法中调用以下代码......
final RenderBox renderBox = context.findRenderObject();
这有时会返回 null?
是什么导致它返回null?有没有更可靠的方法来获取 Widget 的大小?
解决方案
您需要确保小部件当前正在渲染(例如,在屏幕上),或者在尝试访问它之前给它一个渲染时间,例如,initState()
如果这是来自有状态小部件,请在您的上调用它:
WidgetsBinding.instance.addPostFrameCallback(() {
final RenderBox renderBox = context.findRenderObject();
});
推荐阅读
- php - 尝试使用 php 检查用户是否存在
- flutter - setState 没有更新 UI
- javascript - 将字符串截断为 1 MB 大小限制
- javascript - 如何比较javascript中的两个时间戳值?
- python - 从两个数据帧中删除具有矛盾信息的行
- azure - 使用 OAuth2 和 Azure AD 时我们如何运行自动化测试
- android - 无法在 Windows 10 中安装 sdkmanager
- tfs - 如何通过 API 获取 TFS wiki 页面附件
- vtk - vtk 网格生成会改变坐标吗?
- python - ValueError:检查输入时出错:预期 input_2 的形状为 (8,),但得到的数组的形状为 (1,)