Flutter 中 Gap 和 SizedBox 的比较与区别

在 Flutter 中,两个小部件在控制应用设计布局尺寸和空间方面起着至关重要的作用,它们是 SizedBox 和 Gap 小部件。

在 Flutter 中构建响应式布局时,间距和大小很重要。框架提供了一些简单但功能强大的小部件来控制间距和大小,SizedBox 和 Gap。让我们来了解一下 SizedBox 和 Gap。

SizedBox

Flutter 中的 SizedBox 小部件是一个简单而多功能的小部件,它允许你显式地设置小部件的宽度和高度,从而精确控制其尺寸。

它是 Flutter SDK 中的内置小部件,类似于 Container 小部件,但属性较少。例如,以下代码将在两个小部件之间添加 10 像素高的间隙:

Column(children: [Text("Widget 1"),SizedBox(height: 10),Text("Widget 2"),],
)

SizedBox 小部件还可用于约束子小部件的大小。例如,以下代码将使文本小部件的宽度为 100 像素:

SizedBox(width: 100,height: 100,child: Text("Widget 1",style: TextStyle(fontSize: 16),maxLines: 2,overflow: TextOverflow.ellipsis,),
);

Gap

Gap 小部件是 Flutter 中相对较新的补充,在 2.3.0 版本中引入。它简化了在 Flutter 的 widget 树中的 widget 之间添加空间的过程。

与需要明确指定高度或宽度的 SizedBox 和 Container 小部件不同,Gap 小部件会自动调整其大小以匹配父小部件的方向,使其使用起来更加直观和简洁。

Flutter 中 Gap 小部件的类型有哪些?

1. MaxGap 小部件

MaxGap 小部件是一个 Flutter 小部件,用于在列或行中的小部件之间添加间距。它会尝试用指定大小填充可用空间,但如果可用空间小于指定大小,则只会占用可用空间。当您希望缩小间隙以避免溢出时,这非常有用。

例如,你可以使用 MaxGap 小部件在 Row 中的两个按钮之间添加 20 像素的间距,如果 Row 不够宽,无法同时容纳两个按钮和间距,那么间距就会缩小,以便让按钮能够容纳。

Row(children: [	Text('Button 1'),MaxGap(20),Text('Button 2'),],
)

2. SilverGap 小部件

SliverGap 是 Flutter 中的一个小部件,它在 Sliver 之间提供空间。Sliver 是一种用于创建自定义滚动效果的小部件。SliverGap 可以用于在 Sliver 之间添加垂直或水平间距,或者在 CustomScrollView 的开始或结束处创建固定数量的空间。

下面是一个示例,展示如何使用 SliverGap 在条纹之间添加垂直间距:

CustomScrollView(slivers: [SliverList(delegate: SliverChildBuilderDelegate((context, index) {return Text('Item $index');},childCount: 10,),),SliverGap(height: 32.0),SliverList(delegate: SliverChildBuilderDelegate((context, index) {return Text('Item ${index + 10}');},childCount: 10,),),],
)

上面的代码创建了一个 CustomScrollView ,它有两个列表,两个列表之间有 32 像素的垂直间隔。

Gap 和 SizedBox 的关键比较和区别

Gap 和 SizedBox 都是 Flutter 中用于在小部件之间添加间距的小部件。然而,SizedBox 和 Gap 之间有一些关键的区别:

Flutter 中的 Gap 包提供了一系列小部件,可以简化在列和行等 Flex 容器以及可滚动视图中的小部件之间添加间距的过程。

SizedBox 是 Flutter SDK 中的一个内置小部件,它充当一个具有预定义大小的简单盒子,它为子小部件设置大小约束提供了灵活性,虽然其功能类似于 Container 小部件,但 SizedBox 提供了更简洁的方法,减少了属性集。

特性GapSizedBox
尺寸规格在小部件之间添加间距添加间距并约束其子元素的大小
性能轻巧高效功能丰富,但稍重
使用案例简单的固定尺寸间隙固定大小的间隙,大小约束
灵活性小部件间的简单间距父容器中的布局操作
依赖性没有需要 Gap 包

结束

在 Flutter 中,SizedBox 和 Gap 之间的选择取决于你 UI 设计的具体要求,SizedBox 提供精度和固定尺寸,适合某些场景,而 Gap 简化了创建自适应和响应式布局的过程。

通过理解这两个小部件的优势和用例,Flutter 开发人员可以优化他们的代码,以实现无缝和视觉上吸引人的用户体验。


原文:https://medium.com/@codetrade/comparison-and-differences-between-gap-and-sizedbox-2b8c6bac032c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录day26||● 39. 组合总和● 40.组合总和II● 131.分割回文串

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; class Solution {private:vector<int> path;vector<vector<int>> result; public:void trackbacking(vector<int>& candidates,int target,int sum,int startIndex){if(sum>target)retur…

蜘蛛蜂优化算法SWO求解不闭合MD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&#xff0c;求解精度高的优势。VRPTW&#x…

043 多态

示例 public class A {public void say(){System.out.println("I am A");} } public class B extends A {Overridepublic void say(){System.out.println("I am B");} } public class Test {public static void main(String[] args) {A a new B(); // …

【Spring Boot 源码学习】深入 BootstrapContext 及其默认实现

《Spring Boot 源码学习系列》 深入 BootstrapContext 及其默认实现 一、引言二、往期内容三、主要内容3.1 BootstrapContext3.1.1 源码初识3.1.2 get 方法3.1.3 getOrElse 方法3.1.4 getOrElseSupply 方法3.1.5 getOrElseThrow 方法3.1.6 isRegistered 方法 3.2 ConfigurableB…

Windows预定义阴影画刷学习

画刷是一个8*8位图;用来重复填充区域内部; 有实心和阴影画刷;实心就是SolidBrush; 有6种预定义阴影画刷; void CHatchdemoView::OnDraw(CDC* pDC) {CHatchdemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCRect rect1(4…

构建企业多维模型,助力财务战略规划

财务规划与分析是一个企业需要广泛实践、改革优化的领域。战略规划对于财务管理来说&#xff0c;对企业的未来发展具有长期且不可逆的影响。一般企业在做重要战略决策时面临的主要挑战是对于可能结果复杂性的预测&#xff0c;其干涉因素很多&#xff0c;规划范围也十分广泛&…

【Unity】如何从现有项目中抽取好用的资源

【背景】 在做Unity项目的过程中引入各种各样的Package&#xff0c;有的Package很大&#xff0c;但是觉得非常有用的可能只是几个Prefab或者Material等。如果直接拷贝想要的Prefab和Material&#xff0c;又需要自己确认所有有依赖关系的资源。 如果能将所有日常经受项目中自己…

cgroup底层技术研究一、cgroup简介与cgroup命令行工具

本文参考以下文章&#xff1a; 58 | cgroup技术&#xff1a;内部创业公司应该独立核算成本 特此致谢&#xff01; 一、cgroup简介 1. cgroup是什么 cgroup&#xff08;Control Group&#xff09;是Linux内核提供的一种机制&#xff0c;用于对进程或进程组进行资源限制、优先…

python[6]

类和对象 面向对象编程–说白就是让对象干活 创建类&#xff1a;class 类名&#xff1a; 创建类对象 对象名 类名&#xff08;&#xff09; 构造方法 1、构造方法的名称是__init__ 2、构造方法的作用&#xff1f; 构建类对象的时候会自动运行 构建类对象的传参会传递给构造…

react+canvas实现刮刮乐效果

话不多说&#xff0c;直接看代码吧 import { useEffect } from react; import styles from ./index.less;export default function Canvas() {function init() {let gj document.querySelector(.gj);let jp document.querySelector(#jp) as HTMLElement;let canvas documen…

mac flutter 配置

下载Flutter Sdk 直接访问官网无法下载&#xff0c;需要访问中国镜像下载 Flutter SDK 归档列表 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter Start building Flutter Android apps on macOS - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 下载后解压…

3. Linux内存管理

3. 内存管理 RAM 的一部分&#xff08;SRAM&#xff09;被静态地划分给了内核&#xff0c;用来存放内核代码和静态数据结构。 RAM 的其余部分&#xff08;如DRAM、SDRAM、DDR&#xff09;称为动态内存&#xff08;dynamic memory&#xff09;&#xff0c;这不仅是运行用户进程…

Java+SpringBoot+Vue+MySQL:美食推荐系统的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

学习JAVA的第七天(基础)

目录 static 静态变量 静态方法 工具类&#xff1a; static的注意事项 继承 继承的好处 继承的特点 方法的重写 书写格式 override重写注解 方法重写的要求 this关键字 super关键字 static static表示静态&#xff0c;是Java中的一个修饰符&#xff0c;可以修饰成…

基于STM32的蓝牙遥控小车:手机APP控制小车运动

这里写目录标题 一、智能双轮小车蓝牙APP控制前后左右调速运动功能描述原理图设计PCB设计源码设计 二、更多功能小车网友推荐后开发... 一、智能双轮小车蓝牙APP控制前后左右调速运动 功能描述 1、小车可以前后左右运动 2、可以调节小车的速度 3、使用两个电机驱动两个轮子&a…

Go语言必知必会100问题-06 生产者端接口

生产者端接口 Go语言必知必会100问题-05 接口污染中介绍了程序中使用接口是有价值的。在编码的时候&#xff0c;接口应该放在哪里呢&#xff1f;这是Go开发人员经常有误解的一个问题&#xff0c;本文将深入分析该问题。 在深入探讨问题之前&#xff0c;先对提及的术语做一个定…

MySQL(2/3)

select和别名的使用 主要是用以查询数据 语法&#xff1a;select 字段 from 库名 -- *代表全部字段 select * from student; -- 可以查询多个字段&#xff0c;并使用as起别名&#xff0c;as可以省略 select id as bbb ,name as hhh from student; -- 可以使用函数concat(a,b…

新版Java面试专题视频教程——虚拟机篇②

新版Java面试专题视频教程——虚拟机篇② 3 垃圾收回3.1 简述Java垃圾回收机制&#xff1f;&#xff08;GC是什么&#xff1f;为什么要GC&#xff09;3.2 对象什么时候可以被垃圾器回收3.2.1 引用计数法3.2.2 可达性分析算法 3.3 JVM 垃圾回收算法有哪些&#xff1f;——4种3.3…

Python实现DAS单点登录

❇️ 流程 进入登录页面 &#xff08;DAS验证的登录页面&#xff09; 获取验证码图像&#xff0c;百度OCR识别 登录 &#x1f3de;️ 环境 Windows 11 Python 3.12 PyCharm 2023 &#x1f9f5; 准备工作 安装必要依赖库 bs4 Jupyter 推荐安装 Jupyter&#xff08;Anaco…

数学建模【相关性模型】

一、相关性模型简介 相关性模型并不是指一个具体的模型&#xff0c;而是一类模型&#xff0c;这一类模型用来判断变量之间是否具有相关性。一般来说&#xff0c;分析两个变量之间是否具有相关性&#xff0c;我们根据数据服从的分布和数据所具有的特点选择使用pearson&#xff…