我正在使用Flutter,我想向小部件(在本例中,是Text小部件)添加边框。
Text
我尝试了TextStyle和Text,但我不知道如何添加边框。
TextStyle
你可以将Text作为child添加到具有border属性的BoxDecoration的Container中:
child
border
BoxDecoration
Container
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'), )
正如文档中所述,Flutter更喜欢组合而不是参数。
大多数时候,你不是在寻找一个属性,而是一个包装器(有时还有一些助手/“构建者”)。
对于边界,你需要DecoratedBox,它有一个定义边界的decoration属性;也包括背景图像或阴影。
DecoratedBox
decoration
或者,像Aziza说一样,你可以使用Container。它是DecoratedBox, SizedBox和其他一些有用的小部件的组合。
SizedBox
下面是一个扩展的答案。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。
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。
5
30
BoxDecoration myBoxDecoration() { return BoxDecoration( border: Border.all( width: 3.0 ), borderRadius: BorderRadius.all( Radius.circular(5.0) // <--- border radius here ), ); }
DecoratedBox/BoxDecoration非常灵活。阅读颤振箱装饰备忘单获得更多想法。
最好的方法是使用BoxDecoration()
优势
缺点
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"), )
你可以使用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) );
为什么选择使用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), ), ),
输出:
如果你想添加边框的一些文本的容器,那么你可以很容易地通过应用BoxDecoration容器。
代码:
Container( decoration: BoxDecoration( border: Border.all( color: Colors.redAccent, width: 1, ), ), child: Text('Some Text'), );
如果有人想要一个概述/边界文本或应用多个边界。
你可以试试这个:
https://pub.dev/packages/outlined_text
DEMO
用容器包装小部件
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), ), );
你可以把那个小部件包装到DecoratedBox,在这种情况下,DecoratedBox为那个小部件提供装饰
Widget textDecoration(String text){ return DecoratedBox( decoration: BoxDecoration( border: Border.all( color: Colors.red, width: 10, ), ), child: Text(text) ); }
上面的答案也是正确的,但是如果您想在同一个小部件上添加多个边框,那么您可以设置这个选项
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, )
圆角/边缘与底部阴影
Container( // child it's depend on your requirement child: const Center( child: Text( 'This is your Container', ), ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.white, boxShadow: <BoxShadow>[ // shadow color and radius BoxShadow( color: Colors.black54, blurRadius: 15.0, offset: Offset(0.0, 0.75) ) ], ), // according your height ex. 50 height: 50, );
试试下面的代码:
Container( margin: margin, padding: padding, decoration: BoxDecoration( border: Border.all( color: color, width: width, ), ), child: Text( data, style: TextStyle(fontSize: 30.0), ), ),