RenderBox size 返回 0,即使在 WidgetsBinding addPostFrameCallback



所以我正在开发一个应用程序,用户在其中选择一个图像(从相机或图库中),我需要获取加载此图像的小部件的大小以在其上绘制一些线条。

问题是我试图在WidgetsBinding.instance.addPostFrameCallback上获取此小部件的RenderBox.size,并且它的宽度和高度为0。

一些代码:


WidgetsBinding.instance.addPostFrameCallback((_) {final RenderBox renderBox = _keyPic.currentContext.findRenderObject();final size = renderBox.size;

});

使用以下代码加载图像:

Image.memory(_file.readAsBytesSync(), key: _keyPic)

我真的不确定发生了什么,如果有人能阐明这个问题,将不胜感激!

我在查找图像大小时遇到了同样的问题。我使用了异步方法,而不是添加一次性后帧回调。因为异步函数将在所有当前进程完成后运行,除非有 await 关键字。

Widget build(BuildContext context) {
Future(yourFunction);
...
}
Future<void> yourFunction() async {
await Future.delayed(Duration.zero); // add a dummy waiting time
...
// thses codes will run after build, 
}

最新更新