Container组件

1.Container组件

容器组件,内含许多可以控制组件的参数,非常方便。它主要包括以下参数:

参数名 用途
width、height: Double 设置容器宽高
decoration: Decoration 装饰器
child: Weight 容器的子布局
alignment 配置容器内元素的方位。topCenter:顶部居中对齐topLeft:顶部左对齐topRight:顶部右对齐center:水平垂直居中对齐centerLeft:垂直居中水平居左对齐centerRight:垂直居中水平居右对齐bottomCenter底部居中对齐bottomLeft:底部居左对齐bottomRight:底部居右对齐
transform: Matrix4 变换,可以进行旋转、缩放等等变换。注意变换参数在容器中,不在装饰器中
margin 外边距,可以用EdgeInsets.all()、EdgeInsets.fromLTRB()或者EdgeInsets.only()来配置外边距
padding 内边距

1.1 decoration 装饰器

上面说过,Container中有一个参数是decoration,它的类型是Decoration,但是Decoration是一个抽象类,在Container使用时,可以使用它的子类BoxDecoration来装饰。
BoxDecoration中有以下参数:

参数名 用途
color: Color 容器的背景颜色,可以用Colors来配置
border 容器的边框,可以使用以下代码来配置:Border.all()
borderRadius: BorderRadiusGeometry 边框的圆角,BorderRadiusGeometry是抽象类,应该使用它的子类BorderRadius,如BorderRadius.circular()
boxShadow: List 边框阴影
gradient 背景颜色的渐变,例,线性渐变:LinearGradient,径向渐变:RadialGradient,角度渐变:SweepGradient
image: DecorationImage 背景图片,注意容器的背景图片添加时在装饰器中的

1.2 效果展示

最终,我们在Container中配置了如下内容:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyMaterialApp());
}

class MyMaterialApp extends StatelessWidget {
  const MyMaterialApp({super.key});
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MaterialApp',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('AppBar Title')
        ),
        body: const MyBody(),
      ),
    );
  }

}

class MyBody extends StatelessWidget {
  const MyBody({super.key});
  
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        alignment: Alignment.center,
        width: 200,
        height: 100,
        transform: Matrix4.rotationZ(0.3),
        decoration: BoxDecoration(
          image: const DecorationImage(
            image: AssetImage('images/image.webp')
          ),
          color: Colors.yellow,
          border: Border.all(
            color: Colors.brown,
            width: 2.0
          ),
          borderRadius: BorderRadius.circular(8),
          boxShadow: const [
            BoxShadow(
              color: Colors.green,
              offset: Offset(2.0, 2.0),
              blurRadius: 10.0
            )
          ],
          gradient:  const LinearGradient( 
            colors: [Colors.red, Colors.yellow]
          ),
        ),
        child: const Text(
            'Hello Flutter',
            style: TextStyle(
              color: Colors.black87,
              fontSize: 15.0,
            ),
          ),
      ),
    );
  }
}

效果如下:
容器演示

以上部分内容总结自课程 https://www.bilibili.com/video/BV1S4411E7LY

posted @ 2022-11-07 14:37  KindBrave  阅读(74)  评论(0编辑  收藏  举报