如何在 Flutter 中删除两个容器之间的空间?

Posted

技术标签:

【中文标题】如何在 Flutter 中删除两个容器之间的空间?【英文标题】:How to remove space between two containers in Flutter? 【发布时间】:2019-12-08 12:24:46 【问题描述】:

我在 Column 小部件中有两个高度为 250 的容器。这两个容器小部件之间没有任何其他小部件,但我仍然可以看到两个容器之间的空间很小。

这是我的代码...

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      title: 'Flutter Demo',
      home: Example(),
    );
  


class Example extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    double height = 250;
    TextStyle containerTextStyle = TextStyle(color: Colors.white, fontSize: 24);

    return Scaffold(
      body: Column(
        children: <Widget>[
          Container(
            height: height,
            color: Colors.black,
            child: Center(
              child: Text('Container 1', style: containerTextStyle),
            ),
          ),
          Container(
            height: height,
            color: Colors.black,
            child: Center(
              child: Text('Container 2', style: containerTextStyle),
            ),
          ),
        ],
      ),
    );
  

我不知道为什么,但是如果我将此容器的高度设置为 100 或 400,它不会显示容器之间的任何空间。没有尝试使用许多不同的高度值,但空间对于某些值是可见的,而对于其他值是不可见的。

这是我手机的截图...

两个容器高度都等于250

两个容器高度都等于400

【问题讨论】:

运行你的代码,我在 250/350/450 看不到任何空格。尝试为容器添加黑色边框。 decoration: new BoxDecoration( border: new Border.all(color: Colors.black)) 【参考方案1】:

用这个替换你的脚手架:

return Scaffold(
  body: Column(
    children: <Widget>[
      Container(
        height: height,
        decoration: BoxDecoration(
          border: Border.all(width: 0, color: Colors.black),
          color: Colors.black,
        ),
        child: Center(
          child: Text('Container 1', style: containerTextStyle),
        ),
      ),
      Container(
        height: height,
        decoration: BoxDecoration(
          border: Border.all(width: 0, color: Colors.black),
          color: Colors.black,
        ),
        child: Center(
          child: Text('Container 2', style: containerTextStyle),
        ),
      ),
    ],
  ),
);

【讨论】:

【参考方案2】:

正如@sukhi 所说, 您需要在您的Container 中使用BoxDecoration

但是您可以简单地将边框的宽度设置为 0,而不是给边框颜色。

如下:

Container(
  decoration: BoxDecoration(
    color: Colors.black,
    border: Border.all(width: 0),
  ),
  height: height,
  child: Center(
    child: Text('Container 1', style: containerTextStyle),
  ),
),
Container(
  decoration: BoxDecoration(
    color: Colors.black,
    border: Border.all(width: 0),
  ),
  height: height,
  child: Center(
    child: Text('Container 2', style: containerTextStyle),
  ),
),

别忘了在BoxDecoration 中输入你的颜色,而不是Container 本身,否则会引发错误。

Cannot provide both a color and a decoration
The color argument is just a shorthand for "decoration: new BoxDecoration(color: color)".

【讨论】:

【参考方案3】:

有点晚了,但目前似乎是一个开放的 Flutter 问题。我的解决方案与其他答案类似,但由于我的案例中的颜色不透明,我不得不用另一个容器包装有问题的容器,并将装饰添加到父容器:


decoration: BoxDecoration(
             color: Colors.black, //the color of the main container
             border: Border.all(
               //apply border to only that side where the line is appearing i.e. top | bottom | right | left.
               width: 2.0, //depends on the width of the unintended line
               color: Colors.black,
             ),
           ),

根据https://github.com/flutter/flutter/issues/14288#issuecomment-668795963的建议

【讨论】:

这里有什么问题?如果我在一列中有两个容器,我怎么知道有问题的容器?把它们都包起来?

以上是关于如何在 Flutter 中删除两个容器之间的空间?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何在 Listview 中删除行之间的空间

Flutter中列内的容器之间不需要的间距

Flutter - 删除ListView中项目之间的空间

如何删除文本字段中图标和文本之间的间距 - Flutter?

删除颤振中两列之间的空间

Flutter 列显示 Android 中小部件之间的额外空间