小部件中的图像 [颤动]

Posted

技术标签:

【中文标题】小部件中的图像 [颤动]【英文标题】:Image in widget [flutter] 【发布时间】:2018-09-05 03:51:43 【问题描述】:

我想做一张卡片,几张卡片在飘。右侧是图像,左侧是信息文本。我用 CircleAvatar 对其进行了测试,它几乎像我想要的那样工作,但我不想要一个圆圈,我想要一个方形图像。我删除了 CircleAvatar 部分并放入了一个新容器和一个孩子,但我无法使用 AssetImage,我唯一可以使用的是 image.asset('.jpg')。图像几乎比手机大,因为没有可行的方法来设置大小。使用 CircleAvatar 它可以工作,因为我将半径设置为大小。 当我尝试 AssetImage() vscode 对我说我不能把它放在一个小部件中。 我希望你能帮助我(我认为 image.asset() 不是正确的方法)。谢谢大家

    return new MaterialApp(      
  title: title,
  home: new Center(
    child: new Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        new Card(
          child: new Column(
            children: <Widget>[
              new Row(
                children: <Widget>[
                  new Container(
                    child:
                      new CircleAvatar(
                    backgroundImage: new AssetImage('images/lake.jpg'),
                    radius: 80.0,
                      child: new Container(
                        padding: const EdgeInsets.all(0.0),
                          child: new Text('Sight'),
                          ),
                      )
                  ),
                  ),
                  new Container(
                    child: new Text('long information text'),
                  )
                ],
              )
            ],
          ),
        )
      ],
    ),
  )  
);

【问题讨论】:

Minimal, Complete, and Verifiable example 【参考方案1】:

您应该能够为您的行执行此操作:

 Widget build(BuildContext context) 
    return new MaterialApp(
      title: 'Sample App',
      home: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Card(
              child: new Column(
                children: <Widget>[
                  new Row(
                    children: <Widget>[
                      new Container(
                        child: new Image.asset(
                          'images/lake.jpg',
                          height: 60.0,
                          fit: BoxFit.cover,
                        ),
                      ),
                      new Container(
                        child: new Text('long information text'),
                      ),
                    ],
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  

【讨论】:

非常感谢,这解决了我的问题。你知道如何使图像的角变成圆形吗?我用borderradius尝试过,但没有任何变化。在这里你可以看到它:pastebin.com/g8Bu2jXD【参考方案2】:

在您的评论中获得答案!

你可以使用 ClipRRect,

new ClipRRect(
    borderRadius: new BorderRadius.circular(8.0),
    child: new AssetImage('images/lake.jpg')
)

你也可以这样做:

new Container(
        width: 50.0,
        height: 50.0,
        decoration: new BoxDecoration(
        shape: BoxShape.circle,
        image: new DecorationImage(
          fit: BoxFit.fill,
          image: new AssetImage('images/lake.jpg')
          )
       )),

【讨论】:

我为 svg 找到了单独的包,名为 flutter_svg: 。它对我来说很好:) ClippedRRect 似乎期望 Widget 作为一个孩子,所以 AssetImage 导致错误。

以上是关于小部件中的图像 [颤动]的主要内容,如果未能解决你的问题,请参考以下文章

在颤动的 Image.network 小部件中显示缩略图

颤动中的移动小部件

使颤动的网络图像小部件可点击

在屏幕底部和安全区域之间颤动位置小部件

如何在颤动的PageView小部件中给出图像卡的宽度

如何在颤动的屏幕上显示一个小部件?