Flutter 我能';当我指定背景图片时,我不会让CircleAvatar变成椭圆形

Flutter 我能';当我指定背景图片时,我不会让CircleAvatar变成椭圆形,flutter,Flutter,我正在尝试构建一个基本的ListView,其中填充ListTiles,并有一个带有照片的CircleAvatar(前导或尾随) 我的代码是: body: ListView.builder( itemCount: 18, itemBuilder: (ctx, i) { return Padding( padding: EdgeInsets.all(5), child: ListTile( trailing:

我正在尝试构建一个基本的ListView,其中填充ListTiles,并有一个带有照片的CircleAvatar(前导或尾随)

我的代码是:

  body: ListView.builder(
    itemCount: 18,
    itemBuilder: (ctx, i) {
      return Padding(
        padding: EdgeInsets.all(5),
        child: ListTile(
          trailing: 
             CircleAvatar(
              radius: 50.0,
              // child: Text('hi'),
              backgroundImage: 
              AssetImage(
                'assets/images/Survivor-12.jpg',
              ),
            ),
          title: Text('Name of the Person $i'),
          subtitle: Text('Assigned to: Bob'),
          leading: Text(i.toString(), style: TextStyle(fontSize: 24)),
        ),
      );
    },
但是,输出如下所示:


如何使图像成为实际的圆?如果我删除它并用文本小部件替换它,它会工作。

为了使图像处于实际的圆圈中,您可以将CircleAvatar小部件包装在容器小部件中,并使用装饰属性定义其形状,如下所示

 ListTile(
          trailing: ClipOval(
            child: Container(
              color: Colors.white,
              height: 70,
              width: 100,
              child: Image.network(
                imageUrl[0],
              ),
            ),
          ),
          title: Text('Name of the Person $i'),
          subtitle: Text('Assigned to: Bob'),
          leading: Text(i.toString(), style: TextStyle(fontSize: 24)),
        ),
 ListView.builder(
    itemCount: 18,
    itemBuilder: (ctx, i) {
      return Padding(
        padding: EdgeInsets.all(5),
        child: ListTile(
          trailing: Container(
            height: 55.0,
            width: 55.0,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
            ),
            child: CircleAvatar(
              radius: 30.0,
              backgroundImage: NetworkImage(
                  'https://buildflutter.com/wp-content/uploads/2018/04/buildflutter_255.png'),
            ),
          ),
          title: Text('Name of the Person $i'),
          subtitle: Text('Assigned to: Bob'),
          leading: Text(i.toString(), style: TextStyle(fontSize: 24)),
        ),
      );
    },
  ),

看起来列表类型容器更改了呈现方式:如果我为
列()更改
ListView()
,则
CircleAvatar
将在我的应用程序中正确呈现

下面是一个提示:

在横轴中,子对象需要填充ListView

为了解决这个问题,我将
CircleAvatar
包装在
行中,这将填充
列表视图的水平空间,并相应地调整
行的内容。
列表磁贴
可能需要进一步抖动,以使其正确模拟

ListView(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
圆形(
半径:60.0,
背景图片:avatarImage??avatarImage,
),
],
),
//...
],
);