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

Flutter 约束布局

配置插件依赖

设置组件大小 

通过属性 childConstraints 实现

分别设置 约束布局一 和 约束布局二 大大小为:160 和 200

点击查看代码文件

class SummaryPageState extends State<SummaryPage1> {
  ConstraintId constraintId_1 = ConstraintId('ConstraintId_1');
  ConstraintId constraintId_2 = ConstraintId('ConstraintId_2');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Summary'),
      ),
      body: ConstraintLayout(
        childConstraints: [
          // todo 约束布局一
          Constraint(
            id: constraintId_1,
            size: 160,
            bottomLeftTo: parent,
            zIndex: 20,
          ),
          // todo 约束布局二
          Constraint(
            id: constraintId_2,
            size: 200,
            topRightTo: parent,
            zIndex: 20,
          ),
        ],
        children: [
          // todo 约束布局一
          Container(
            color: Colors.redAccent,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_1'),
          ).applyConstraintId(id: constraintId_1),
          // todo 约束布局二
          Container(
            color: Colors.blueAccent,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_2'),
          ).applyConstraintId(id: constraintId_2),
        ],
      ),
    );
  }
}

位于某个视图底部

约束布局ID:ConstraintId_4 位于 ConstraintId_3 下面

点击查看代码文件

class SummaryPageState extends State<SummaryPage2> {
  ConstraintId constraintId_3 = ConstraintId('ConstraintId_3');
  ConstraintId constraintId_4 = ConstraintId('ConstraintId_4');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Summary'),
      ),
      body: ConstraintLayout(
        children: [
          // todo 约束布局三
          Container(
            color: Colors.blue,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_3'),
          ).applyConstraint(
              id: constraintId_3,
              width: 200,
              height: 150,
              top: parent.top,
              left: parent.left,
              right: parent.right),

          // todo 约束布局四
          Container(
            color: Colors.orange,
            width: 200,
            height: 150,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_4\n位于 ConstraintId_3 下面'),
          ).applyConstraint(
            id: constraintId_4,
            left: parent.left,
            top: constraintId_3.bottom,
          ),
        ],
      ),
    );
  }
}

位于某个视图底部中间

约束布局ID:ConstraintId_6 位于 ConstraintId_5 底部 中间 位置

点击查看代码文件

class SummaryPageState extends State<SummaryPage3> {
  ConstraintId constraintId_5 = ConstraintId('ConstraintId_5');
  ConstraintId constraintId_6 = ConstraintId('ConstraintId_6');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Summary'),
      ),
      body: ConstraintLayout(
        children: [
          // todo 约束布局三
          Container(
            color: Colors.blue,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_5'),
          ).applyConstraint(
              id: constraintId_5,
              width: 200,
              height: 150,
              top: parent.top,
              left: parent.left,
              right: parent.right),

          // todo 约束布局四
          Container(
            color: Colors.orange,
            width: 200,
            height: 150,
            alignment: Alignment.center,
            child: const Text('约束布局ID:ConstraintId_6 \n 位于 ConstraintId_5 底部 中间 位置'),
          ).applyConstraint(
            id: constraintId_6,
            left: constraintId_5.left,
            top: constraintId_5.bottom,
            right: constraintId_5.right,
          ),
        ],
      ),
    );
  }
}

位于父视图中间

约束布局ID:ConstraintId_7 位于 父视图 中间 位置

点击查看代码文件

// todo © 国宝宝 2024年09月19日 周四 17:31
class SummaryPageState extends State<SummaryPage4> {
  ConstraintId constraintId_7 = ConstraintId('ConstraintId_7');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Summary'),
      ),
      body: ConstraintLayout(
        ch

http://www.kler.cn/news/314593.html

相关文章:

  • 充电桩项目:前端实现
  • Ubuntu 安装 OpenGL 开发库
  • leetcode第十四题:最长公共前缀
  • 12.Java基础概念-面向对象-static
  • 2024“华为杯”中国研究生数学建模竞赛(A题)深度剖析_数学建模完整过程+详细思路+代码全解析
  • 无线安全(WiFi)
  • 【MySQ】在MySQL里with 的用法
  • 【技术解析】消息中间件MQ:从原理到RabbitMQ实战(深入浅出)
  • 计算机毕业设计之:基于微信小程序的校园流浪猫收养系统(源码+文档+讲解)
  • WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题
  • vue配置axios
  • 使用Java实现高效用户行为监控系统
  • 二叉树(二)深度遍历和广度遍历
  • Redis的三种持久化方法详解
  • Spring Boot实战:使用策略模式优化商品推荐系统
  • linux用户管理运行级别找回root密码
  • 【Java注解】
  • Docker指令学习1
  • 【Kubernetes】常见面试题汇总(二十七)
  • 【网络安全 | 代码审计】PHP无参数RCE
  • 从图像处理到字符识别:基于STM32与C语言的车牌识别系统实现
  • HarmonyOS开发者基础认证考试试题
  • 基于mockito做单元测试
  • 16【Protues51单片机仿真】智能洗衣机倒计时系统
  • 【如何在 Windows 10 主机上通过 VMware 安装 Windows 11 虚拟机,并共享主机网络】
  • ftp服务的管理及安全优化
  • Google 扩展 Chrome 安全和隐私功能
  • C/C++通过CLion2024进行Linux远程开发保姆级教学
  • io多路复用:epoll水平触发(LT)和边沿触发(ET)的区别和优缺点
  • Linux 自旋锁