在下面的代码中,两行用_Box
包裹的300x300框(FittedBox
)缩小以适合屏幕。结果,每个框都变得小于300x300。
但是,如果使用build()
和_Box
在RenderBox.size
的LayoutBuilder()
方法中获得框的宽度,则获得的大小分别为300.0
和Infinity
。
如何获得实际显示的尺寸?
我想在C0]类内部获取它,而无需从父级传递它。
_Box
在下面的代码中,两行用FittedBox包装的300x300框(_Box)缩小以适合屏幕。结果,每个盒子变得小于300x300。但是,如果我在...
Flutter class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: FittedBox(
child: Row(
children: <Widget>[
_Box(Colors.red),
_Box(Colors.orange),
],
),
),
),
),
);
}
}
class _Box extends StatelessWidget {
const _Box(this.color);
final Color color;
@override
Widget build(BuildContext context) {
RenderBox renderBox = context.findRenderObject();
print(renderBox?.size?.width); // 300.0
return LayoutBuilder(
builder: (_, constraints) {
print(constraints.maxWidth); // Infinity
return Container(
width: 300,
height: 300,
color: color,
);
},
);
}
}
对象用于限制可渲染小部件的大小,通常永远不会真正用于获取小部件的当前大小。