美文网首页
布局约束

布局约束

作者: 乐狐 | 来源:发表于2022-07-05 09:10 被阅读0次
布局约束.png

Flutter 中有两种布局模型:

  • 基于 RenderBox 的盒模型布局。
  • 基于 Sliver 的按需加载列表布局。

任何时候子组件都必须先遵守父组件的约束,UnconstrainedBox "移除"父组件限制的并非是真正的"移除",只不过它不影响最终子组件的大小,但仍然占据相应的空间。如果使用UnconstrainedBox后,子组件的大小超过它父组件约束时,也会导致溢出报错。

SizedBox:指定尺寸的容器。
DecoratedBox:带装饰的容器。
RotatedBox:旋转一定角度的容器。
ConstaintedBox:带约束条件的容器。

import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(
    debugShowCheckedModeBanner: false,
    home: LayoutWidget(),
  ));
}

class LayoutWidget extends StatefulWidget {
  const LayoutWidget({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _LayoutState();
}

class _LayoutState extends State<LayoutWidget> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('布局约束'),
        ),
        body: Column(children: [
          //用于对子组件添加额外的约束
          ConstrainedBox(
            constraints: const BoxConstraints(
                minWidth: double.infinity, //宽度尽可能大
                maxHeight: 20.0 //最大高度为20像素
                ),
            child: const SizedBox(
              //受到约束无效
              height: 60.0,
              child: DecoratedBox(
                decoration: BoxDecoration(color: Colors.red),
              ),
            ),
          ),
          const Divider(
            height: 10,
            color: Colors.blue,
          ),
          //使用SizedBox规定子组件大小
          SizedBox(
            width: 100, //最小最大宽度100
            height: 100, //最小最大高度100
            child: Container(
              width: 1,
              height: 1,
              decoration: const BoxDecoration(
                color: Colors.blue,
                //设置背景
                image: DecorationImage(
                    image: NetworkImage(
                        "https://upload.jianshu.io/admin_banners/web_images/5055/348f9e194f4062a17f587e2963b7feb0b0a5a982.png?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540"),
                    fit: BoxFit.cover),
              ),
            ),
          ),
          ConstrainedBox(
            constraints:
                const BoxConstraints(minWidth: 160.0, minHeight: 160.0),
            child: UnconstrainedBox(
                //"移除"父级限制
                child: Container(
              width: 10,
              height: 10,
              decoration: const BoxDecoration(color: Colors.green),
            )),
          )
        ]));
  }
}

相关文章

  • 2019-03-15

    实验内容:关于线性布局、约束布局及表格布局的使用 主要代码: 主界面: 线性布局: 约束布局: 表格布局: 截图:...

  • Andoird 约束布局笔记

    都8102年了,赶紧来学一下约束布局ConstraintLayout 约束布局。约束贯穿这个布局的使用方式。 定位...

  • ConstraintLayout(约束布局)

    ConstraintLayout(约束布局) 学习约束布局以记之~ 1.Circular positioning(...

  • 自动布局、SnapKit、Layout之约束动画

    布局Layout之约束动画 原生方式添加约束 自动布局SnapKit SnapKit的应用

  • 使用ConstraintLayout总结(持续更新)

    参考文章 constrainlayout官方说明 constrainlayout约束性布局指示梳理 约束布局con...

  • iOS Masonry使用总结

    Masonry布局定位约束冲突 视图布局添加约束的时候,有的时候会报一对约束冲突:Probably at leas...

  • 约束布局

    Android 代码动态布局 LayoutParams 使用 >>RelativeLayout **Relativ...

  • 2018-10-31

    ios布局约束 关于布局约束的发展史: 1.通过代码计算fram...

  • 约束者布局与协调者布局

    约束者布局 约束者布局安卓2.3版本默认布局 是一个ViewGroup,它的出现是为了解决复杂布局时,布局嵌套过多...

  • Jetpack Compose 的约束布局ConstraintL

    1.Android虽然支持约束布局,但是我们还是推荐使用约束盒子布局,嵌套虽然增多,但是代码量整体减少。 2.约束...

网友评论

      本文标题:布局约束

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