在ListTile中更改CircleAvatar的大小

5

我想增加ListTile中CircleAvatar的大小作为Leading,但是如果我增加半径,圆形就不会保持比例,变成椭圆。

以下是我的代码:

ListView.builder(
itemCount: friendlist.length,
itemBuilder: (BuildContext context, int index) {
print(friendlist[index]);
return ListTile(
        title: Text(friendlist[index]["nickname"],
                style: TextStyle(fontSize: 20)),
        leading: CircleAvatar(
            radius: 50,
            backgroundColor: Colors.transparent,
            backgroundImage: CachedNetworkImageProvider(core.url + "profiles/" + friendlist[index]["avatar_id"]),
          ),
        subtitle:
        Text(friendlist[index]["lost_last"])
    );
}));

我尝试了以下方法:

  1. 将圆形头像嵌套在固定宽度和高度的容器中 -> 圆形仍然是椭圆形
  2. 更改ListView.builder的ItemExtent -> 圆形仍然无法使用所有空白空间并变成椭圆形。

谢谢

2个回答

2

实际上有一种方法可以改变CircleAvatar,与大小相关的有两个属性:minRadiusmaxRadius。它们用于分别设置最小半径和最大半径。如果您已经使用了半径,就不能再使用minRadius和/或maxRadius。相反地,如果设置了minRadius或maxRadius中的任意一个,则不能使用半径:

CircleAvatar(
    backgroundImage: NetworkImage('https://www.woolha.com/media/2020/03/eevee.png'),
    minRadius: 50,
    maxRadius: 75,
  )

2

目前使用ListTitle无法实现此功能,因为这是他们为小部件的标准添加的限制。

为了实现可访问性,可点击的前导和尾随小部件的大小必须至少为48x48。然而,为了遵循Material规范,在单行ListTiles中,密集模式(dense: true)下的尾随和前导小部件在视觉上应最多为32或40(dense: false),这可能与可访问性要求冲突。

您可以为您的需求创建自定义小部件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接