flutter如何在widget没有渲染的时候获得renderBoxsize
在Flutter中,要获取一个widget的渲染大小,需要在该widget已经渲染完成后才能获取到。如果需要在widget还没有渲染完成时获取其大小,可以使用WidgetsBinding
的addPostFrameCallback
方法。
例如,假设有一个Container
widget,需要在其渲染完成后获取其大小,可以使用以下代码:
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
Size _size;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
_size = context.size;
});
});
}
@override
Widget build(BuildContext context) {
return Container(
width: 100,
height: 100,
color: Colors.blue,
child: Text('Hello World'),
);
}
}
在initState
方法中,通过WidgetsBinding.instance.addPostFrameCallback
注册一个回调函数,在widget渲染完成后执行。在回调函数中,可以通过context.size
获取widget的大小,并通过setState
更新状态。在build
方法中,返回一个Container
widget,用于测试获取大小的效果。

原文地址: http://www.cveoy.top/t/topic/bY6e 著作权归作者所有。请勿转载和采集!