Transform.translate
是Flutter中的一个变换组件,它可以用于调整子组件的位置。它不是动画组件,而是提供了一种在不改变子组件布局的情况下,通过应用平移、旋转、缩放等变换来改变子组件显示位置的方法。这些变换仅仅是视觉效果,不会影响布局。
Transform.translate({
Key? key,
required Offset offset,
this.transformHitTests = true,
this.filterQuality,
Widget? child,
}) : transform = Matrix4.translationValues(offset.dx, offset.dy, 0.0),
origin = null,
alignment = null,
super(key: key, child: child);
Transform.translate
接收一个offset
参数,它表示要对子组件应用的水平和垂直平移距离。Offset
类的构造函数接收两个参数,分别表示水平(x轴)和垂直(y轴)方向上的偏移量。例如,Offset(-16, 0)
表示水平方向向左移动16个单位(例如,像素)。
Widget buildCustomTransListTile(){
return ListTile(
leading: Align(
widthFactor: 1.0,
alignment: Alignment.center,
child: Icon(Icons.circle)
),
title: Transform.translate(
offset: Offset(-16, 0), // 控制水平偏移量
child: Text('这是标题,图标居中')
),
subtitle: Transform.translate(
offset: Offset(-16, 0), // 控制水平偏移量
child: Text('副标题'),
),
trailing: Icon(Icons.arrow_forward),
);
}
我之前使用Transform.translate
来调整ListTile
的title
和subtitle
组件的位置,使它们在水平方向上向左移动16个单位,从而减小与leading
图标之间的间距。
需要注意的是,Transform
组件应用的变换仅影响视觉效果,不会改变子组件在布局中的实际位置。这意味着,即使你将子组件移动到其他位置,它仍然会占据原来的布局空间。
Transform.translate
是一个非常实用的组件,可以用来调整子组件在屏幕上的位置,而不需要更改布局。这使得它在调整间距、对齐或创建视觉效果时非常有用。
本文由老郭种树原创,转载请注明:https://guozh.net/flutter-uses-transform-translate/