azi*_*iza 166
您可以将TextField
a 添加child
到Container
具有BoxDecoration
with border
属性的a:
new Container(
margin: const EdgeInsets.all(15.0),
padding: const EdgeInsets.all(3.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent)
),
child: Text("My Awesome Border"),
)
Run Code Online (Sandbox Code Playgroud)
Sur*_*gch 122
这是一个扩展的答案.A DecoratedBox
是你需要添加边框,但我使用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),
),
);
}
Run Code Online (Sandbox Code Playgroud)
其中,BoxDecoration
为
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(),
);
}
Run Code Online (Sandbox Code Playgroud)
这些具有的边框宽度1
,3
和10
分别.
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 1, // <--- border width here
),
);
}
Run Code Online (Sandbox Code Playgroud)
它们的边框颜色为
Colors.red
Colors.blue
Colors.green
码
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
color: Colors.red, // <--- border color
width: 5.0,
),
);
}
Run Code Online (Sandbox Code Playgroud)
这些都有边界
码
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,
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
这些有边界半径5
,10
和30
分别.
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.all(
Radius.circular(5.0) // <--- border radius here
),
);
}
Run Code Online (Sandbox Code Playgroud)
DecoratedBox
/ BoxDecoration
非常灵活.阅读Flutter - BoxDecoration备忘单了解更多想法.
小智 35
您可以用它来包装DecoratedBox
提供装饰的小部件:
Widget textDecoration(String text){
return DecoratedBox(
decoration: BoxDecoration(
border: Border.all(
color: Colors.red,
width: 10,
),
),
child: Text(text)
);
}
Run Code Online (Sandbox Code Playgroud)
kri*_*yaa 26
概括
我试图总结使用border
in时的所有重要可能性BoxDecoration
。
以下解释边界的结果:
说明
基本的
Container(
decoration: BoxDecoration(border: Border.all()),
child: const Text("Text"),
),
Run Code Online (Sandbox Code Playgroud)
边框颜色、宽度和描边对齐
Container(
decoration: BoxDecoration(
border: Border.all(
width: 4,
color: Colors.green,
strokeAlign: BorderSide.strokeAlignCenter)),
child: const Text("Text"),
),
Run Code Online (Sandbox Code Playgroud)
仅在特定一侧有边框
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Container(
decoration: const BoxDecoration(
border: Border(top: BorderSide(width: 2))),
child: const Text("Text"),
),
Container(
decoration: const BoxDecoration(
border: Border(bottom: BorderSide(width: 2))),
child: const Text("Text"),
),
Container(
decoration: const BoxDecoration(
border: Border(
top: BorderSide(width: 2),
bottom: BorderSide(width: 4))),
child: const Text("Text"),
),
],
),
Run Code Online (Sandbox Code Playgroud)
不同的形状
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(),
shape: BoxShape.circle),
child: const Text("Text"),
),
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(),
borderRadius: BorderRadius.circular(10),
),
child: const Text("Text"),
),
],
),
Run Code Online (Sandbox Code Playgroud)
弯曲边界半径
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(),
borderRadius: const BorderRadius.horizontal(
left: Radius.circular(5), right: Radius.circular(20))
),
child: const Text("Text"),
),
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border.all(),
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(10),
bottomRight: Radius.circular(20))),
child: const Text("Text"),
),
],
),
Run Code Online (Sandbox Code Playgroud)
San*_*inh 22
最好的方法是使用 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"),
)
Run Code Online (Sandbox Code Playgroud)
用容器包裹该小部件
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),
),
);
Run Code Online (Sandbox Code Playgroud)
上面的答案也是正确的,但如果你想在同一个小部件中添加多个边框,那么你可以设置这个
Container(
child: const Center(
child: Text(
'This is your Container',
),
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
boxShadow: const [
BoxShadow(color: Colors.green, spreadRadius: 8),
BoxShadow(color: Colors.yellow, spreadRadius: 5),
],
),
height: 50,
)
Run Code Online (Sandbox Code Playgroud)
在这里,由于Text小部件没有允许我们定义 的属性border
,我们应该用一个允许我们定义边框的小部件包装它。有几种解决方案。但最好的解决方案是在Container小部件中使用BoxDecoration。
为什么选择使用 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),
),
),
Run Code Online (Sandbox Code Playgroud)
输出:
如文档中所述,抖动优先于组合而不是参数。在大多数情况下,您要寻找的不是属性,而是包装器(有时是一些帮助器/“构建器”)
对于边界,您想要的是DecoratedBox
具有decoration
定义边界的属性; 而且还有背景图片或阴影。
也可以像@Aziza所说的那样使用Container
。这是组合DecoratedBox
,SizedBox
和其他一些有用的小工具。
小智 5
使用 BoxDecoration() 是显示边框的最佳方式。
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 4,
)),
child: // Your child widget
),
Run Code Online (Sandbox Code Playgroud)
您还可以在此处查看完整格式。
小智 5
您可以使用 Container 来包含您的小部件:
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 1,
)),
child: Text()
),
Run Code Online (Sandbox Code Playgroud)
使用带有 Boxdercoration 的容器。
BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.circular(10.0)
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69141 次 |
最近记录: |