如何用新的间隙小部件替换 SizedBox?

问题描述 投票:0回答:2

我一直在 Flutter 中使用 SizedBox 通过指定宽度和高度来添加小部件之间的间距,如下所示:

SizedBox(height: 20), SizedBox(width: 10), 

我最近遇到了间隙小部件,这似乎是一种更简洁的处理间距的方法。如何在我的 Flutter 项目中有效地将 SizedBox 替换为 Gap? 与 SizedBox 相比,使用 Gap 的主要区别或优点是什么?

flutter
2个回答
0
投票

Gap 组件由gap 包提供,是一种更简洁、更具表现力的方式来处理 Flutter 中组件之间的间距。它的用途与 SizedBox 相同,用于添加空间,但简化了代码并提高了可读性。

如何用Gap替换SizedBox

  1. 将gap包添加到您的pubspec.yaml中来安装gap包。
dependencies:
  gap: ^2.0.0
  1. 将包导入到 Dart 文件中:
import 'package:gap/gap.dart';
  1. 将 SizedBox 替换为 Gap: 如果你有:
SizedBox(height: 20),
SizedBox(width: 10),

将其替换为:

Gap(20), // For vertical spacing
Gap(10), // For horizontal spacing

使用示例

Column(
  children: [
    Text('First Item'),
    Gap(20), // Adds vertical space automatically in a Column
    Text('Second Item'),
  ],
);

Row(
  children: [
    Icon(Icons.star),
    Gap(10), // Adds horizontal space automatically in a Row
    Icon(Icons.star_border),
  ],
);

切换到 Gap 可以使您的代码库更干净、更一致,尤其是在使用可能动态改变方向的布局时。


-1
投票

尺寸框小部件 它是最常用的一种,因为我们只需设置高度和宽度,这使我们能够控制它的空间和尺寸,它更可能是容器小部件,但属性较少。下面的代码片段在两个小部件之间创建了一个 20px 高度的分隔符

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

我们还用它来确定子窗口小部件的大小:以下代码片段为子窗口小部件提供了 100px 的高度和宽度

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

间隙小工具 这也增加了小部件树中小部件之间的间距,但它绝不像大小框或容器那样,因为它只需要大小并自动确定宽度和高度,它还根据父小部件确定空间的方向,所以它是更容易处理

Gap 小部件有两种类型:

最大间隙小部件: 该小部件根据给定的大小填充小部件之间的空间。尽管如此,如果可用空间小于给定空间,它会填充可用空间以避免溢出。因此,它对于使应用程序响应起来非常有帮助。 MaxGap 小部件上的示例

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

SliverGap 小部件: 此小部件用于分隔条子小部件,条子小部件用于制作自定义滚动效果(以下教程中将详细介绍)。 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, ), 
), 
], 
)
© www.soinside.com 2019 - 2024. All rights reserved.