Flutter如何用背景图像创建卡片?

Jon*_*nas 11 dart flutter

我正在尝试创建一个以图像为背景的卡片。问题是,图像溢出了卡,因此没有显示角落。

我需要将图像设置为卡的背景或将卡的溢出行为设置为无溢出。但是我找不到任何属性。

这是我的卡:

Widget _buildProgrammCard() {
  return Container(
    height: 250,
    child: Card(
      child: Image.asset(
        'assets/push.jpg',
        fit: BoxFit.cover,
      ),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(10.0),
      ),
      elevation: 5,
      margin: EdgeInsets.all(10),
    ),
  );
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

在此处输入图片说明

在此处输入图片说明

anm*_*ail 23

另一种方法不使用- ClipRRect小工具-是设置semanticContainer: true,Card部件。

示例代码如下:

Card(
          semanticContainer: true,
          clipBehavior: Clip.antiAliasWithSaveLayer,
          child: Image.network(
            'https://placeimg.com/640/480/any',
            fit: BoxFit.fill,
          ),
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(10.0),
          ),
          elevation: 5,
          margin: EdgeInsets.all(10),
        ),
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

  • `clipBehavior: Clip.antiAliasWithSaveLayer,` 很重要,否则在添加背景图像后,卡上将不会有正确的圆角边框。 (4认同)
  • 是的,我需要重新启动。现在可以了。我更喜欢此解决方案,而不是仅仅给Image提供相同的角,所以我将接受此答案。谢谢! (2认同)
  • 如果我需要向卡添加更多小部件怎么办? (2认同)

And*_*sky 5

您可以将图像包装在 ClipRRect

ClipRRect(
  borderRadius: BorderRadius.vertical(top: Radius.circular(10.0)),
  child: Image.network(...),
)
Run Code Online (Sandbox Code Playgroud)