我正在使用Flutter,我想为小部件添加边框(在本例中为文本小部件)。
我尝试了TextStyle和Text,但我没有看到如何添加边框。
答案 0 :(得分:88)
您可以将TextField
添加为child
Container
BoxDecoration
border
属性:
new Container(
margin: const EdgeInsets.all(15.0),
padding: const EdgeInsets.all(3.0),
decoration: new BoxDecoration(
border: new Border.all(color: Colors.blueAccent)
),
child: new Text("My Awesome Border"),
)
答案 1 :(得分:59)
这是一个扩展的答案。您需要添加DecoratedBox
边框,但是为了方便添加边距和填充,我使用Container
。
这是常规设置。
Widget myWidget() {
return Container(
margin: const EdgeInsets.all(30.0),
padding: const EdgeInsets.all(10.0),
decoration: myBoxDecoration(), // <--- BoxDecoration here
child: Text(
"text",
style: TextStyle(fontSize: 30.0),
),
);
}
BoxDecoration
所在的
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(),
);
}
它们的边界宽度分别为1
,3
和10
。
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 1, // <--- border width here
),
);
}
这些具有
的边框颜色Colors.red
Colors.blue
Colors.green
代码
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
color: Colors.red, // <--- border color
width: 5.0,
),
);
}
这些具有边框
代码
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border(
left: BorderSide( // <--- left side
color: Colors.black,
width: 3.0,
),
top: BorderSide( // <--- top side
color: Colors.black,
width: 3.0,
),
),
);
}
它们的边界半径分别为5
,10
和30
。
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.all(
Radius.circular(5.0) // <--- border radius here
),
);
}
DecoratedBox
/ BoxDecoration
非常灵活。阅读Flutter — BoxDecoration Cheat Sheet了解更多想法。
答案 2 :(得分:5)
使用BoxDecoration()是显示边框的最佳方法。
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 4,
)),
child: //Your child widget
),
您还可以查看完整格式here
答案 3 :(得分:5)
您可以使用Container来包含您的小部件:
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 1,
)),
child: Text()
),
答案 4 :(得分:5)
使用具有Boxdercoration的容器。
BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.circular(10.0)
);
答案 5 :(得分:3)
正如文档中所述,颤动更喜欢构图而不是参数。 你大部分时间寻找的不是属性,而是一个包装器(有时是一些助手/“构建器”)
对于边框,您想要的是DecoratedBox
,它具有定义边框的decoration
属性;还有背景图片或阴影。
或者像@Aziza所说,你可以使用Container
。哪个是DecoratedBox
,SizedBox
和其他一些有用的小部件的组合。
答案 6 :(得分:1)
在这里,由于 Text 小部件不具有允许我们定义border
的属性,因此我们应使用允许我们定义边境。
有几种解决方案。
但是最好的解决方案是在BoxDecoration小部件中使用 Container 。
为什么选择使用BoxDecoration?
因为BoxDecoration提供了更多的自定义功能,例如可以定义:
首先,border
并定义:
示例:
Container(
child:Text(' Hello Word '),
decoration: BoxDecoration(
color: Colors.yellow,
border: Border.all(
color: Colors.red ,
width: 2.0 ,
),
borderRadius: BorderRadius.circular(15),
),
),
输出:
答案 7 :(得分:0)
答案 8 :(得分:-1)
最好的方法是使用BoxDecoration()
优势
缺点
BoxDecoration
仅与Container
小部件一起使用,因此您希望将小部件包装在Container()
中
示例
Container(
margin: EdgeInsets.all(10),
padding: EdgeInsets.all(10),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.orange,
border: Border.all(
color: Colors.pink[800],// set border color
width: 3.0), // set border width
borderRadius: BorderRadius.all(
Radius.circular(10.0)), // set rounded corner radius
boxShadow: [BoxShadow(blurRadius: 10,color: Colors.black,offset: Offset(1,3))]// make rounded corner of border
),
child: Text("My demo styling"),
)
答案 9 :(得分:-1)
如果您想为容器的某些文本添加边框,则可以通过将 BoxDecoration 应用到容器来轻松实现。
代码:
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.redAccent,
width: 1,
),
),
child: Text('Some Text'),
);