Flutter 使用 Transform.translate 调整子 Widget 的位置

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来调整ListTiletitlesubtitle组件的位置,使它们在水平方向上向左移动16个单位,从而减小与leading图标之间的间距。

需要注意的是,Transform组件应用的变换仅影响视觉效果,不会改变子组件在布局中的实际位置。这意味着,即使你将子组件移动到其他位置,它仍然会占据原来的布局空间

Transform.translate是一个非常实用的组件,可以用来调整子组件在屏幕上的位置,而不需要更改布局。这使得它在调整间距、对齐或创建视觉效果时非常有用。

本文由老郭种树原创,转载请注明:https://guozh.net/flutter-uses-transform-translate/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注