📜  Flutter – BoxDecoration 小部件

📅  最后修改于: 2021-09-23 06:28:59             🧑  作者: Mango

BoxDecoration是一个内置在flutterAPI插件。在最基本的层面上,它描述了一个盒子应该如何在屏幕上绘制。盒子的形状不仅可以是矩形或正方形,也可以是圆形。它有很多属性,我们可以在里面添加图像,向边框添加半径(如果形状是矩形),向框投射阴影等。下面我们将看到它的所有属性和示例实现BoxDecoration 小部件。

BoxDecoration 类的构造函数:

const BoxDecoration(
{Color? color,
DecorationImage? image,
BoxBorder? border,
BorderRadiusGeometry? borderRadius,
List? boxShadow,
Gradient? gradient,
BlendMode? backgroundBlendMode,
BoxShape shape: BoxShape.rectangle}
)

BoxDecoration 小部件的属性:

  • backgroundBlendMode:此属性将BlendMode枚举作为此参数的对象。它将混合效果应用于背景颜色或渐变。
  • border: border参数以BoxBorder类为对象,在框周围绘制边框。
  • borderRadius:此属性将 BorderRadiusGeometry 类作为对象,如果框形状是矩形,则该对象会在边框角部周围添加曲线。
  • boxShadow:此属性包含一个 BoxShadow 小部件列表作为对象。它在盒子上投下阴影。
  • color:此属性将Color类作为对象,为BoxDecoration小部件提供背景颜色。
  • 渐变:此属性以Gradient类为对象,在框内应用渐变填充。
  • image:此属性在背景上添加一个图像,以DecorationImage类为对象。
  • padding:此属性将 EdgeInsetsGeometry 类作为对象,在框内的内容周围添加空白空间。
  • shape:该属性以BoxShape为对象来决定盒子的形状。

例子:

Dart
import 'package:flutter/material.dart';
 
//imported material design package
void main() {
  runApp(
    //Widget tree starts from here
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GeeksforGeeks'),
          backgroundColor: Colors.greenAccent[400],
        ), //AppBar
        body: Center(
          child: Container(
            width: 300,
            height: 300,
            //BoxDecoration Widget
            decoration: BoxDecoration(
              image: const DecorationImage(
                image: NetworkImage(
                    'https://media.geeksforgeeks.org/wp-content/cdn-uploads/20190710102234/download3.png'),
                fit: BoxFit.cover,
              ), //DecorationImage
              border: Border.all(
                color: Colors.green,
                width: 8,
              ), //Border.all
              borderRadius: BorderRadius.circular(15),
              boxShadow: [
                BoxShadow(
                  color: Colors.black,
                  offset: const Offset(
                    5.0,
                    5.0,
                  ), //Offset
                  blurRadius: 10.0,
                  spreadRadius: 2.0,
                ), //BoxShadow
                BoxShadow(
                  color: Colors.white,
                  offset: const Offset(0.0, 0.0),
                  blurRadius: 0.0,
                  spreadRadius: 0.0,
                ), //BoxShadow
              ],
            ), //BoxDecoration
          ), //Container
        ), //Center
      ), //Scaffold
    ), //MaterialApp
  );
}


输出:

说明:这个应用程序中的父小部件是Center ,它保存着应用程序主体的整个小部件树。 Center小部件将Container小部件作为子部件。 BoxDecoration小部件由Container的装饰属性获取。框内绘制的第一个元素是借助image属性的NetworkImage 。然后我们有边框属性,它在框周围分配了一个 4 像素厚的绿色边框。并且要在边框的角周围添加曲线,我们使用boderRadius属性在每个角上添加 15 px 半径的曲线。最后,我们有boxShadow属性,它包含两个BoxShadow类的列表,用于在框内(图像下方)分配白色背景,在框外分配深黑色阴影。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!