使 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 应该是常量)。