美文网首页flutter
DecoratedBox组件

DecoratedBox组件

作者: 卢融霜 | 来源:发表于2021-07-05 15:03 被阅读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
    

    相关文章

      网友评论

        本文标题:DecoratedBox组件

        本文链接:https://www.haomeiwen.com/subject/hqqiultx.html