如何在 Flutter 中为 Container Widget 下划线

Posted

技术标签:

【中文标题】如何在 Flutter 中为 Container Widget 下划线【英文标题】:How to underline a Container Widget in Flutter 【发布时间】:2018-12-10 02:11:35 【问题描述】:

我试图在我的 Flutter 应用程序中为 Container 加下划线。到目前为止,当我使用以下代码时,我实现了某种下属:

    Container(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: Padding(
                padding: EdgeInsets.all(8.0),
                child: Text(
                  'Underline my parent!',
                  maxLines: 2,
                  textAlign: TextAlign.center,
                ),
              ),
            )
          ],
        ),
        decoration: Border(bottom: BorderSide(color: Colors.grey)),
      ),

但现在我希望下划线不是从头到尾,我想在开头和结尾留出空间。如果有一些更聪明的方式来给小部件下划线,我也会很高兴看到它。

【问题讨论】:

【参考方案1】:

在您的容器中添加底部BorderSide

     Container(
        decoration: BoxDecoration(
           border: Border(
              bottom: BorderSide(width: 1.0, color: Colors.black),
           ),
       ),
    ),

【讨论】:

【参考方案2】:

您可以使用一个简单的 Divider 小部件,包括一个填充:

new Padding(
    padding: EdgeInsets.all(8.0), 
    child: new Divider()
),

然后您可以用列包装现有的小部件:

new Column(
    children: <Widget> [
        yourContainerWidget,
        new Padding(
            padding: EdgeInsets.all(8.0), 
            child: new Divider()
        ),     
    ]
)

【讨论】:

好的,但是这个 Divider 应该放在哪里?容器之后? 这是一个相当不错的方法,但我现在无法设置分隔线宽度。 然后尝试移除它周围的填充。 我的意思是下划线的宽度,现在它是固定像素,我看不出有任何可能使它的宽度例如 5 像素 嗯,你可以把它放在一个容器里,用width属性设置宽度。【参考方案3】:

您可以使用 Border 在 Container 小部件中简单地创建下划线

这里是代码:

Container(
  padding: EdgeInsets.all(8.0),
  decoration: BoxDecoration(
    border: Border(
      bottom: BorderSide(
        width: 1.0
      ),
    ),
  ),
  child: Text(
    'Underline my parent!',
    maxLines: 2,
    textAlign: TextAlign.center,
  ),
), 

【讨论】:

【参考方案4】:

一个简单的解决方案是使用Container 小部件创建一条线。并使用 Column 小部件包装 Row 小部件并将该行添加为第二个孩子,如下所示:

var aLine = Container(color: Colors.grey, width: 50.0, height: 2.0,); 

Column(
  children: <Widget>[
    Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Expanded(
            child: Padding(
              padding: EdgeInsets.all(8.0),
              child: Text(
                'Underline my parent!',
                maxLines: 2,
                textAlign: TextAlign.center,
              ),
            ),
          ),
        ],
      ),
      aLine
  ],
),

【讨论】:

以上是关于如何在 Flutter 中为 Container Widget 下划线的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中为 Text 的下划线设置动画?

如何在 Flutter 中为容器的底部边框设置动画?

Flutter:如何在 Flutter 中为 Firebase (FCM) 注册令牌订阅ToTopic

如何在 Flutter 中为 Button 设置边距

如何在 Container 中垂直扩展 TextField 以覆盖 Flutter 中的所有可用空间

Flutter:如何在 google_maps_flutter 中为标记图标设置动画?