当前位置: 首页 > article >正文

Flutter组件————Container

Container

Container 是 Flutter 中最常用的布局组件之一

参数

参数名称类型描述
alignmentAlignmentGeometry定义子组件在其内部的对齐方式,默认为 null,即不改变子组件的位置。
paddingEdgeInsetsGeometry内边距,用于在子组件周围添加空间。
colorColor设置容器的背景颜色。如果设置了 decoration,则此属性会被忽略。
decorationDecoration用于绘制容器的装饰(如背景、边框等)。不能与 foregroundDecoration 和 color 同时使用。
foregroundDecorationDecoration在子组件之上绘制的装饰。
widthdouble设置容器的宽度。
heightdouble设置容器的高度。
constraintsBoxConstraints对容器尺寸施加约束条件。
marginEdgeInsetsGeometry外边距,用于在容器与其他组件之间添加空间。
transformMatrix4应用到容器的变换矩阵,例如旋转、缩放或平移。
transformAlignmentAlignmentGeometry指定变换的原点相对于容器的对齐方式,默认为中心。
childWidget容器中包含的子组件。
clipBehaviorClip控制是否以及如何裁剪超出容器边界的内容,默认值为 Clip.none。
constraintsBoxConstraints限制容器大小的最大最小宽高,当与 width 或 height 一起使用时,这些值会覆盖约束中的相应部分。

Decoration 属性

Decoration是用来修饰container的组件的抽象类,我们可以使用他的实现类对container进行修饰

1. BoxDecoration

BoxDecoration 是最常用的一种装饰类型,它可以组合多种视觉元素来定制容器的外观。以下是 BoxDecoration 支持的主要属性:

  • color (Color):设置容器的纯色背景。
  • gradient (Gradient):使用线性或径向渐变作为背景。
  • image (DecorationImage):用图片填充背景,支持调整图像的适应方式(如平铺、缩放等)。
  • border (BoxBorder):定义容器的边框样式,包括宽度、颜色和圆角。
  • borderRadius (BorderRadiusGeometry):设置边框的圆角半径。
  • boxShadow (List<BoxShadow>):添加一个或多个阴影效果到容器。
  • shape (BoxShape):定义容器的形状,默认是矩形,也可以设置为圆形。

示例代码:

Container(
  decoration: BoxDecoration(
    color: Colors.blue, // 背景颜色
    gradient: LinearGradient(colors: [Colors.red, Colors.blue]), // 渐变背景
    image: DecorationImage(image: NetworkImage('URL'), fit: BoxFit.cover), // 图片背景
    border: Border.all(color: Colors.black, width: 2.0), // 边框
    borderRadius: BorderRadius.circular(12.0), // 圆角边框
    boxShadow: [
      BoxShadow(
        color: Colors.grey.withOpacity(0.5),
        spreadRadius: 5,
        blurRadius: 7,
        offset: Offset(0, 3), // 阴影位置
      ),
    ],
  ),
)

2. ShapeDecoration

ShapeDecoration 可以用来绘制具有特定形状的背景。它通常与 ShapeBorder 结合使用,比如 CircleBorderRoundedRectangleBorder,以创建圆形或圆角矩形等形状。

示例代码:

Container(
  decoration: ShapeDecoration(
    color: Colors.green,
    shape: CircleBorder(), // 创建圆形背景
  ),
)

3. Gradient

虽然 Gradient 主要用于 BoxDecoration 中,但它本身也是一个独立的装饰类型,可以直接应用于其他需要渐变效果的地方。Flutter 提供了两种类型的渐变:

  • LinearGradient:线性渐变,沿直线方向变化颜色。
  • RadialGradient:径向渐变,从中心向外扩散变化颜色。

示例代码

class CompentPage extends StatefulWidget {
  const CompentPage({super.key});

  
  _CompentPageState createState() => _CompentPageState();
}

class _CompentPageState extends State<CompentPage> {
  
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.center, //子组件在其内部的对齐方式
      padding: const EdgeInsets.all(10), // 内边距
      // color: Colors.white, // 背景颜色
      decoration: BoxDecoration(
          color: Colors.white,
          border: Border.all(color: Colors.red, width: 2),
          borderRadius: BorderRadius.circular(10)),
      width: 200, // 宽度
      height: 200, // 高度
      constraints: const BoxConstraints(maxHeight: 200), // 限制组件大小
      margin: const EdgeInsets.all(10),  // 外边距
      clipBehavior: Clip.hardEdge, /// 裁剪方式
      ///边框(使用的时候不能使用color)
      child: const Text("container组件"), // 子组件
    );
  }
}

效果

在这里插入图片描述


http://www.kler.cn/a/448587.html

相关文章:

  • 人脸生成3d模型 Era3D
  • k8s迁移——岁月云实战笔记
  • microk8s使用
  • (Z Shell)zsh: no matches found: ? 使用单引号包裹
  • 服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例
  • C# cad启动自动加载启动插件、类库编译 多个dll合并为一个
  • Windows下使用git配置gitee远程仓库
  • 【C语言】后端开发。数据一致性和分布式锁
  • 基于springboot的电影订票系统
  • SpringMVC的URL组成,以及URI中对/斜杠的处理,解决IllegalStateException: Ambiguous mapping
  • 在 Sanic 应用中使用内存缓存管理 IP 黑名单
  • 霍尔传感器在汽车车门把手上的应用
  • 前端安全——敏感信息泄露
  • Redis——缓存穿透
  • 黑马程序员Java笔记整理(day07)
  • VS2022(Visual Studio)中显示行数(c#)
  • GIT安装过程
  • vue项目两种路由模式原理和应用
  • C/C++面试
  • 【Java】Java代理
  • Django-视图
  • Android 16 关于动态权限使用的变更
  • 监控易在汽车制造行业信息化运维中的应用案例
  • 论文浅尝 | HippoRAG:神经生物学启发的大语言模型的长期记忆(Neurips2024)
  • 带有 Elasticsearch 和 Langchain 的 Agentic RAG
  • 使用Wireshark导出数据包中的文件