Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振-如何创建宽度匹配父容器?_Flutter_Dart - Fatal编程技术网

Flutter 颤振-如何创建宽度匹配父容器?

Flutter 颤振-如何创建宽度匹配父容器?,flutter,dart,Flutter,Dart,我在我的颤振应用程序中使用这个简单的小部件: FlatButton( child: Column( children: <Widget>[ Image.asset(assets, height: 40, width: 40), Text('Title'), //my color line Container( height: 5,

我在我的颤振应用程序中使用这个简单的小部件:

  FlatButton(
   child: Column(
          children: <Widget>[
            Image.asset(assets, height: 40, width: 40),
            Text('Title'),
            //my color line
            Container(
              height: 5,
              width: ?,
              color: Colors.blue[800],
            )
          ],
        )
  )
FlatButton(
子:列(
儿童:[
图像.资产(资产,高度:40,宽度:40),
文本(“标题”),
//我的颜色线
容器(
身高:5,,
宽度:?,
颜色:颜色。蓝色[800],
)
],
)
)

我需要颜色线(在按钮),与宽度匹配的家长。但是我不知道怎么做。

容器
在没有子对象的
列中总是会展开。如果确实添加了
子项
,它将对其进行包装

此外,如果不在按钮中约束
,它也将增长到完全可用的高度

我的建议是,不要在按钮的列中放置一个空的
容器
,而是用容器包装按钮并给它一个底部边框。这将在底部为您提供彩色线条

Container(
  decoration: BoxDecoration(
    border: Border(
      bottom: BorderSide(width: 5, color: Colors.blue[800]),
    ),
  ),
  child: FlatButton(
    onPressed: () {},
    child: Column(
      mainAxisSize: MainAxisSize.min, // prevent Column to expand full height
      children: <Widget>[
        Icon(Icons.cake, size: 40),
        Text('title'),
      ],
    ),
  ),
),
容器(
装饰:盒子装饰(
边界:边界(
底部:边框边(宽度:5,颜色:Colors.blue[800]),
),
),
孩子:扁平按钮(
按下:(){},
子:列(
mainAxisSize:mainAxisSize.min,//防止列扩展到全高
儿童:[
图标(图标.蛋糕,尺寸:40),
文本(“标题”),
],
),
),
),
使用

FlatButton(
子:内部宽度(
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
图像.资产(资产,高度:40,宽度:40),
文本(“标题”),
//我的颜色线
容器(
身高:5,,
宽度:?,
颜色:颜色。蓝色[800],
)
],
))
)
有两种方法可以做到这一点

约束框:

它创建一个小部件,对其子部件施加附加约束,该小部件在内部使用
SingleChildRenderObjectWidget
在子部件上添加约束

ConstrainedBox(
        constraints:
            const BoxConstraints(minWidth: double.infinity, maxHeight: 10),
        child: Container(
          color: Colors.blue,
        ),
      ),
SizedBox:

SizedBox只创建具有给定宽度/高度的长方体,不允许子对象超出给定的尺寸。它还使用
SingleChildRenderObjectWidget
来确定子渲染区域

SizedBox(
        width: double.infinity,
        height: 5,
        // height: double.infinity,
        child: Container(
          color: Colors.blue,
        ),
      ),

你有没有试着把它设为double.infinity?你想要和图像一样大的蓝线?还是一条和按钮一样宽的线?如果是这种情况,只需删除width参数
ConstrainedBox(
        constraints:
            const BoxConstraints(minWidth: double.infinity, maxHeight: 10),
        child: Container(
          color: Colors.blue,
        ),
      ),
SizedBox(
        width: double.infinity,
        height: 5,
        // height: double.infinity,
        child: Container(
          color: Colors.blue,
        ),
      ),