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,
),
),