使 CachedNetworkImage 缩放以适应 ListTile 的高度
Make CachedNetworkImage scale to fit height of ListTile
我想将 CachedNetworkImage
作为 leading
属性 放置在 ListTile
中,并让图像本身缩放以适应 [=13= 的高度].如果不为 CachedNetworkImage
指定固定高度,这是否可行?
我现在有的就是这个,看起来不错,但是固定高度32px。
return ListTile(
title: Text(record.title),
subtitle: Text(record.type),
leading: CachedNetworkImage(imageUrl: url, fit: BoxFit.scaleDown, height: 32),
onTap:_onListItemTap,
);
我不喜欢固定尺寸,但也许我应该喜欢?我可以期望 Flutter 中的 32px 始终适用于任何设备上的 ListTile
吗?
或者是否有更好的方法让我的图像大小动态调整以适应 ListTile
的其他内容?
ListTile 的前导元素通常应该是一个图标,当然您也可以使用任何其他元素。但一种方法是使用 IconTheme.of(context).size 作为图像的大小,然后在主题中指定大小。这样,理论上您可以在应用程序的顶层根据屏幕尺寸设置主题,并让它自动传播到您使用它的任何地方。然而,大多数时候你不需要这样做,因为 flutter 会自动处理不同的屏幕 DPI。
另一种可能的方法是在 CachedNetworkImage 周围使用 AspectRatio 小部件,以便宽度取决于 ListTile 的高度(对于特定类型的 ListTile 应该是常量)。
我想将 CachedNetworkImage
作为 leading
属性 放置在 ListTile
中,并让图像本身缩放以适应 [=13= 的高度].如果不为 CachedNetworkImage
指定固定高度,这是否可行?
我现在有的就是这个,看起来不错,但是固定高度32px。
return ListTile(
title: Text(record.title),
subtitle: Text(record.type),
leading: CachedNetworkImage(imageUrl: url, fit: BoxFit.scaleDown, height: 32),
onTap:_onListItemTap,
);
我不喜欢固定尺寸,但也许我应该喜欢?我可以期望 Flutter 中的 32px 始终适用于任何设备上的 ListTile
吗?
或者是否有更好的方法让我的图像大小动态调整以适应 ListTile
的其他内容?
ListTile 的前导元素通常应该是一个图标,当然您也可以使用任何其他元素。但一种方法是使用 IconTheme.of(context).size 作为图像的大小,然后在主题中指定大小。这样,理论上您可以在应用程序的顶层根据屏幕尺寸设置主题,并让它自动传播到您使用它的任何地方。然而,大多数时候你不需要这样做,因为 flutter 会自动处理不同的屏幕 DPI。
另一种可能的方法是在 CachedNetworkImage 周围使用 AspectRatio 小部件,以便宽度取决于 ListTile 的高度(对于特定类型的 ListTile 应该是常量)。