Flutter - 如何在图像下方使用带有图像和文本/图标的容器小部件

Posted

技术标签:

【中文标题】Flutter - 如何在图像下方使用带有图像和文本/图标的容器小部件【英文标题】:Flutter - How to use container widget with image and text/icons below image 【发布时间】:2019-04-01 20:20:58 【问题描述】:

我在尝试在颤动的容器中创建图像和该图像下方的文本/图标时遇到了一些问题。我有什么far,我想在图像下包含三个行小部件,每行都有一个文本小部件或一个图标小部件,但每当我尝试这样做时,容器只会采用文本/图标小部件的形状图像将消失。在这种情况下我使用了错误的小部件吗?我想要类似于this 的内容,请注意图片底部的标题、日期和位置。

我的代码:

class EventRow extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return Container(
      height: 150.0,
      margin: const EdgeInsets.symmetric(
        vertical: 16.0,
        horizontal: 24.0,
      ),
      child: new Stack(
        children: <Widget>[
          eventCardContent,
          userThumbnail,
        ],
      ),
    );
  

  final userThumbnail = new Container(
    margin: EdgeInsets.symmetric(vertical: 16.0),
    alignment: FractionalOffset.centerLeft,
    child: CircleAvatar(
      backgroundImage: AssetImage("assets/images/letter_u.png"),
      backgroundColor: Colors.white,
      maxRadius: 40.0,
    ),
  );

  final eventCardContent = new Container(
    margin: new EdgeInsets.only(left: 46.0),
    decoration: new BoxDecoration(
      shape: BoxShape.rectangle,
      color: new Color(0xFFFFFFFF),
      borderRadius: new BorderRadius.circular(8.0),
      image: DecorationImage(
        image: AssetImage("assets/images/moon_pumpkin.jpeg"),
        fit: BoxFit.fill,
      ),
    ),
  );

【问题讨论】:

您能否添加一张您希望屏幕外观的图片?我有一些想法,但需要准确了解您的目标外观和感觉 刚刚对原问题做了更新 【参考方案1】:

您只需用 Column 包装您的 userThumbnail 容器并使用属性 mainAxisSize: MainAxisSize.min,即可解决您的问题。

它告诉列小部件占用空间需要什么,但仅此而已。任何 uncertainty 大小不适用于mainAxisSize: MainAxisSize.min,并可能导致 ui error 大小未定义。

以下代码可能会对您有所帮助。

 @override
Widget build (BuildContext context) 
return Scaffold(
  appBar: new AppBar(
    title: new Text("Csd"),
  ),
  body: Column(
    children: <Widget>[
      Container(
        height: 150.0,
        margin: const EdgeInsets.symmetric(
          vertical: 16.0,
          horizontal: 24.0,
        ),
        child: new Stack(
          children: <Widget>[
            eventCardContent,
            userThumbnail,
          ],
        ),
      ),
      new Column(
        children: <Widget>[
          Row(
            children: <Widget>[
              new Column(
                children: <Widget>[
                  Text("SEP"),
                  Text("30"),
                ],
              ),
              Expanded(
                 child:new Column(
                   children: <Widget>[
                     new Text("title"),
                     new Text("Sub title"),
                     new Text("Second Sub Title"),
                   ],
                 )
              )
            ],
          ),

        ],
      )
    ],
  ),
);

【讨论】:

这并不是我想要达到的目标,我对问题进行了更新以澄清。

以上是关于Flutter - 如何在图像下方使用带有图像和文本/图标的容器小部件的主要内容,如果未能解决你的问题,请参考以下文章

Adobe air(HTML + JS)阻止图像,输入和文本区域的右键单击事件

CSS - 只需要图像大小(不是文本)在悬停时增加

如何插入带有页码、文件路径和图像的页脚?

Flutter:需要帮助来实现带有图像的卡片

使用引导程序连续图像下方的文本[关闭]

Flutter/Dart - 如何在其他屏幕上的图像选择器后更新图像