所以我正在开发一个应用程序,用户在其中选择一个图像(从相机或图库中),我需要获取加载此图像的小部件的大小以在其上绘制一些线条。
问题是我试图在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,
}