Flutter - 仅在足够 space 可用时显示图像
Flutter - only show image if enough space available
我有一个 Expanded
小部件,它的子部件是 Image.asset(...)
。
在小型手机上 space 不够用,图像被大幅缩小。由于无论如何它只是为了吸引眼球,如果至少没有可用的 height >= 100.0
,我想隐藏/不显示 Image
。
如何在 Flutter 中完成此操作?有没有办法获取父窗口小部件的大小?
您可以使用LayoutBuilder
获取小部件的输入约束。
然后根据这些约束决定是否显示图像
LayoutBuilder(
builder: (context, constraint) {
if (constraint.maxHeight < 100.0) {
// too small
return Container();
} else {
// ok
return Column(
children: <Widget>[
Image.asset("foo"),
Container()
],
);
}
},
)
很棒的 Remi 解决方案,您也可以使用 MediaQuery 和 MediaQueryData,它有一些属性和方法可以在这种情况下为您提供帮助。
一些属性是方向、大小、填充、设备像素比等
示例:
MediaQuery.of(context).orientation
https://docs.flutter.io/flutter/widgets/MediaQuery-class.html
https://docs.flutter.io/flutter/widgets/MediaQueryData-class.html
我有一个 Expanded
小部件,它的子部件是 Image.asset(...)
。
在小型手机上 space 不够用,图像被大幅缩小。由于无论如何它只是为了吸引眼球,如果至少没有可用的 height >= 100.0
,我想隐藏/不显示 Image
。
如何在 Flutter 中完成此操作?有没有办法获取父窗口小部件的大小?
您可以使用LayoutBuilder
获取小部件的输入约束。
然后根据这些约束决定是否显示图像
LayoutBuilder(
builder: (context, constraint) {
if (constraint.maxHeight < 100.0) {
// too small
return Container();
} else {
// ok
return Column(
children: <Widget>[
Image.asset("foo"),
Container()
],
);
}
},
)
很棒的 Remi 解决方案,您也可以使用 MediaQuery 和 MediaQueryData,它有一些属性和方法可以在这种情况下为您提供帮助。
一些属性是方向、大小、填充、设备像素比等
示例:
MediaQuery.of(context).orientation
https://docs.flutter.io/flutter/widgets/MediaQuery-class.html https://docs.flutter.io/flutter/widgets/MediaQueryData-class.html