首页 > 其他分享 >不知道父部件的尺寸,限制子部件的尺寸

不知道父部件的尺寸,限制子部件的尺寸

时间:2023-12-19 22:22:51浏览次数:29  
标签:限制 color 部件 height 尺寸 child LayoutBuilder

当不知道父部件的尺寸时,可以使用以下方法来限制子部件的尺寸:

使用FractionallySizedBox小部件

FractionallySizedBox根据父部件的尺寸的一部分来调整子部件的尺寸。widthFactorheightFactor指定了子部件相对于父部件的宽度和高度的比例。

例如,widthFactor: 0.5表示子部件的宽度将是父部件宽度的50%。

优点:可以根据父部件的尺寸的一部分调整子部件的尺寸,无需直接指定具体的最小和最大约束。

缺点:子部件的尺寸会在每次父部件尺寸变化时重新计算,可能会引起性能消耗。

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

  @override
  State<MyVideo> createState() => _MyVideoState();
}

class _MyVideoState extends State<MyVideo> {
  @override
  Widget build(BuildContext context) {
    return Container(
      height: double.maxFinite,
      color: Colors.yellow,
      child: FractionallySizedBox(
        widthFactor: 0.5,
        heightFactor: 0.5,
        child: Container(
          color: Colors.red,
        ),
      ),
    );
  }
}

使用LayoutBuilder小部件

LayoutBuilder提供了父部件的约束条件,您可以根据这些约束条件动态设置子部件的尺寸。

优点:提供了很大的灵活性,可以根据父部件的约束条件动态计算和设置子部件的尺寸。

缺点:如果父部件的尺寸频繁变化,LayoutBuilder会在每次构建时重新计算子部件的尺寸,可能引起性能消耗。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LayoutBuilder Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('LayoutBuilder Example'),
        ),
        body: Center(
          child: Container(
            color: Colors.blue,
            child: LayoutBuilder(
              builder: (BuildContext context, BoxConstraints constraints) {
                // 计算子组件的宽度和高度
                double width = constraints.maxWidth / 2;
                double height = constraints.maxHeight / 2;

                return Container(
                  width: width,
                  height: height,
                  color: Colors.red,
                  child: Center(
                    child: Text('Sub Widget'),
                  ),
                );
              },
            ),
          ),
        ),
      ),
    );
  }
}

 

标签:限制,color,部件,height,尺寸,child,LayoutBuilder
From: https://www.cnblogs.com/xbinbin/p/17914153.html

相关文章

  • 动态短效代理ip为什么限制ip提取和并发?
    动态短效代理IP之所以会限制提取和并发连接的原因主要是为了防止滥用、维护服务的质量和可靠性。下面是一些可能的原因:      1,防止滥用: 提供短效HTTP代理IP的服务可能会实施提取和并发限制,以防止滥用其资源。如果没有限制,用户可能会大规模地抓取代理IP,导致服务不稳定,甚至......
  • 优化减小docker images 尺寸
    什么是docker?Docker是一种容器引擎,可以在容器内运行一段代码。Docker镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。要构建镜像,docker使用一个名为Dockerfile的文件。Dockerfile是一个包含许多指令(RUN、COPY、EXPOSE等)的文件。成功执行这些命令后,doc......
  • 物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制
    1.前言:在对物联网网关进行压测的时候,发现在腾讯云部署网关程序,设备接入数量只能达到4000多个长连接,之后就再也无法接入终端了。之前在阿里云部署的时候明明可以到达2万左右,而且腾讯云的这个服务器比阿里云的硬件配置还要高上不少,不至于那么差,随后查阅大量资料终于完美解决。2.解......
  • 安防视频监控/可视化监控云平台EasyCVR播放鉴权与播放限制功能详细介绍
    视频监控GB28181视频管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,智能监控平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCVR支持多种播放协议,包括:HLS、HTTP-FLV......
  • 2024年软考报名条件有哪些?有学历限制吗?
    不少考生开始准备报名2024年软件水平考试,那么报名软考有没有学历、专业以及工作经验等方面的限制呢?今天小编就给大家详细来介绍一下。 软考报名条件如下: 1、凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据本人情况,报名参加相应专业类......
  • 微信小游戏中拖拽场景位置的限制代码
    usingSystem.Collections.Generic;usingUnityEngine;[RequireComponent(typeof(Camera))]publicclassCameraControl:MonoBehaviour{publicstaticCameraControlinstance;publicList<string>list_RayName=newList<string>();publ......
  • NX 2306 打开文件-无法加载从重用库插入的标准件(使用当前搜索选项找不到文件,部件已卸
    【写在每个笔记前面:个人学习记录,如有错误,烦请指正,不胜感激。】   (今日内容源于  NX网-老叶)重新打开装配体,加载异常,有如下警告首先明确如下两点:1、组件的文件路径未改动2、组件的文件名称未改动其次最后一点:☆:装配加载选项:修改为“按照保存的”,官方解释如下图右。......
  • SAP搜索帮助的限制值范围样式
    样式一:点击下拉框,输入筛选数据,筛选搜索帮助列表样式二:点击漏斗,输入筛选数据,筛选搜索帮助列表参数设置:不同的样式,通过账号的参数设置决定第一种样式:没有配置F4METHOD,或者配置了参数值为ActiveX第二种样式:配置了F4METHOD且值为NoActiveX 定期更文,欢迎关注    ......
  • 打破限制,一键实现Line多开功能
    在日常生活中,我们经常需要同时使用多个社交软件来联系朋友、家人和同事,其中LINE是一个非常流行的聊天应用程序。然而,LINE只允许同时登录一个账号,这对于需要同时使用多个账号的人来说是一个限制。因此,许多人都在寻找一种方法来打破这个限制,以便能够同时登录多个LINE账号。最近,一些......
  • 限制Android程序员发展的不是年龄,而是这个.....
    前言在互联网圈有个默认的35岁定律:做互联网技术的,一旦年龄来到35岁,如果不能转到公司的管理岗位,还在基层默默地写程序,改bug,那么离被离职就不远了。同样,这两年网上大量的裁员信息层出不穷,不少大龄程序员都在这被淘汰。那么,我们今天一起来思考一下限制程序员发展的到底是什么?是年龄?为......