我正在使用 Flutter,我想为小部件(在本例中为Text
小部件)添加边框。
我试过TextStyle
and Text
,但我没有看到如何添加边框。
我正在使用 Flutter,我想为小部件(在本例中为Text
小部件)添加边框。
我试过TextStyle
and Text
,但我没有看到如何添加边框。
这是一个扩展的答案。ADecoratedBox
是您需要添加边框的内容,但我使用 a 是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 备忘单以获得更多想法。
最好的方法是使用 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"),
)
如文档中所述,Flutter 更喜欢组合而不是参数。
大多数时候,您不是在寻找属性,而是在寻找包装器(有时还有一些助手/“构建器”)。
对于边框,您需要DecoratedBox
,它具有decoration
定义边框的属性;还有背景图像或阴影。
或者,就像Aziza 所说,您可以使用Container
. 这是和其他一些有用的小部件DecoratedBox
的组合。SizedBox
用容器包装那个小部件
Container(
margin: const EdgeInsets.all(30.0),
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(border: Border.all(
color: Colors.black,
width: 1,
),
),
child: Text(
"text",
style: TextStyle(fontSize: 30.0),
),
);
在这里,由于Text小部件没有允许我们定义 a 的属性border
,我们应该用一个允许我们定义边框的小部件包装它。有几种解决方案。但最好的解决方案是在Container小部件中使用BoxDecoration。
为什么选择使用 BoxDecoration?
因为 BoxDecoration 提供了更多的自定义功能,例如可以定义:
首先,border
and也定义:
一个例子:
Container(
child:Text(' Hello Word '),
decoration: BoxDecoration(
color: Colors.yellow,
border: Border.all(
color: Colors.red ,
width: 2.0 ,
),
borderRadius: BorderRadius.circular(15),
),
),
输出:
您可以使用 Container 来包含您的小部件:
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 1,
)),
child: Text()
),
使用带有 Boxdercoration 的容器。
BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.circular(10.0)
);
在这种情况下,您可以将该小部件包装到为该小部件提供装饰的 DecoratedBox
Widget textDecoration(String text){
return DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.red,
width: 10,
),
),
child: Text(text)
);
}
如果您想为容器的某些文本添加边框,那么您可以通过将 BoxDecoration 应用到 Container 来轻松实现。
代码 :
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.redAccent,
width: 1,
),
),
child: Text('Some Text'),
);