DecoratedBox组件
2021-07-05 本文已影响0人
卢融霜
DecoratedBox可以在其子组件绘制前(或后)绘制一些装饰(Decoration),如背景、边框、渐变等。DecoratedBox定义如下:
DecoratedBox({
Decoration decoration,
DecorationPosition position = DecorationPosition.background,
Widget child
})
decoration:代表将要绘制的装饰,它的类型为Decoration。Decoration是一个抽象类,它定义了一个接口 createBoxPainter(),子类的主要职责是需要通过实现它来创建一个画笔,该画笔用于绘制装饰。
position:此属性决定在哪里绘制Decoration,它接收DecorationPosition的枚举类型,该枚举类有两个值:
background:在子组件之后绘制,即背景装饰。
foreground:在子组件之上绘制,即前景。
BoxDecoration
我们通常会直接使用BoxDecoration类,它是一个Decoration的子类,实现了常用的装饰元素的绘制。
BoxDecoration({
Color color, //颜色
DecorationImage image,//图片
BoxBorder border, //边框
BorderRadiusGeometry borderRadius, //圆角
List<BoxShadow> boxShadow, //阴影,可以指定多个
Gradient gradient, //渐变
BlendMode backgroundBlendMode, //背景混合模式
BoxShape shape = BoxShape.rectangle, //形状
})
案例
import 'package:flutter/cupertino.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter/material.dart';
// ignore: camel_case_types
class DecoratedBox_L extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new _DecoratedBox_L();
}
}
// ignore: camel_case_types
class _DecoratedBox_L extends State<DecoratedBox_L> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("DecoratedBox_L"),
),
body: Column(
children: [
Padding(
padding: EdgeInsets.all(20),
child: Center(
child: DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.blue, Colors.orange[700]]),
borderRadius: BorderRadius.circular(5),
boxShadow: [
BoxShadow(
color: Colors.black54,
offset: Offset(2.0, 2.0),
blurRadius: 4.0,
spreadRadius: 1.0)
]),
child: SizedBox(
width: 200.r,
height: 50.r,
child: Center(
child: Text("decoration"),
),
),
),
),
),
],
),
);
}
}
image.png
apk下载地址
https://www.pgyer.com/IUVS