一、认识组件
1.DecoratedBox组件介绍
可容纳一个子组件,可将其进行装饰。核心属性为decoration,可设置边线、渐变、阴影、背景图等。
1 | 名称: DecoratedBox 装饰盒 |
2. 组件属性一览
属性名 | 属性类型 | 默认值 | 备注 |
---|---|---|---|
key | Key | null | 组件键 |
decoration | Decoration | @required | 装饰对象 |
position | DecorationPosition | DecorationPosition.background | 装饰位置 |
child | Widget | null | 子组件 |
Decoration对象
1 | Decoration # 抽象类 |
DecorationPositiond对象
1 | DecorationPositiond |
二、使用组件
1. 盒装饰: BoxDecoration
BoxDecoration的属性较多,也是最常用的装饰对象
属性名 | 属性类型 | 默认值 | 备注 |
---|---|---|---|
color | Color | null | 颜色 |
image | DecorationImage | null | 装饰对象 |
border | BoxBorder | null | 装饰边线 |
borderRadius | BorderRadiusGeometry | null | 边角半径 |
boxShadow | List |
null | 阴影 |
gradient | Gradient | null | 渐变 |
backgroundBlendMode | BlendMode | null | 背景叠色模式 |
shape | BoxShape | BoxShape.rectangle | 装饰形状 |
color,borderRadiu,boxShadows,boxShadow,gradient综合案例
1 | class BoxDecorationDemo extends StatelessWidget { |
image,shape综合案例:
通过image可以为任意组件指定一个图片背景,用法与Image组件
类似
通过shape可以指定装饰区域是方形还是圆形。
1 | class ShapeImageDemo extends StatelessWidget { |
position和border综合案例:
注意点:border不能和borderRadius共同使用
这里添加边线,如果position
是背景,那么装饰就看不见了.所以应该用foreground
1 | class BorderDemo extends StatelessWidget { |
2. 形状装饰: ShapeDecoration
如果需要形状的高度DIY,可以使用
ShapeDecoration
作为装饰ShapeBorder
详细用法见:https://juejin.im/post/5e6196066fb9a07c8b5bbdf5
属性名 | 属性类型 | 默认值 | 备注 |
---|---|---|---|
color | Color | null | 颜色 |
image | DecorationImage | null | 装饰对象 |
boxShadow | List |
null | 阴影 |
gradient | Gradient | null | 渐变 |
shape | ShapeBorder | @required | 装饰形状 |
1 | class ShapeDecorationDemo extends StatelessWidget { |
3. 底线装饰: UnderlineTabIndicator
UnderlineTabIndicator
可以在子组件的底部添加装饰
属性名 | 属性类型 | 默认值 | 备注 |
---|---|---|---|
borderSide | Color | BorderSide(width: 2.0, color: Colors.white) | 边线 |
insets | EdgeInsetsGeometry | EdgeInsets.zero | 间距 |
1 | class UnderlineTabIndicatorDemo extends StatelessWidget { |
4. FlutterLogo装饰: FlutterLogoDecoration
以
FlutterLogo
为背景的装饰,没有太大的实用价值。
属性名 | 属性类型 | 默认值 | 备注 |
---|---|---|---|
lightColor | Color | Color(0xFF42A5F5) | 上两杠颜色 |
darkColor | Color | Color(0xFF0D47A1) | 下杠颜色 |
textColor | Color | Color(0xFF616161) | 文字颜色 |
style | FlutterLogoStyle | FlutterLogoStyle.markOnly | 展示模式 |
margin | EdgeInsetsGeometry | EdgeInsets.zero | 外间距 |
1 | class FlutterLogoDecorationDemo extends StatelessWidget { |
三、尾声
FlutterUnit开源项目: https://github.com/toly1994328/FlutterUnit
我的公众号:编程之王
联系我–邮箱:1981462002@qq.com –微信:zdl1994328
@张风捷特烈 2020.04.29
~ END ~