当我在代码中为小部件使用 Transform.translate 时,为什么小部件的原点始终位于左上角?

时间:2021-03-20 08:14:17

标签: flutter

我正在编写一个 flutter 程序,您可以在其中使用 GestureDetector 而不是 Draggable 小部件,用手指移动小部件。

这是我的代码。我使用 Transform.translate 来移动。

import 'package:flutter/material.dart';

class AAA extends StatefulWidget {
  @override
  AAAState createState() => AAAState();
}

class AAAState extends State<AAA> {
  double x = 0.0;
  double y = 0.0;

  @override
  Widget build(BuildContext context) {
    return Transform.translate(
      offset: Offset(x, y),
      child: GestureDetector(
        onPanUpdate: (DragUpdateDetails details) {
          RenderBox getBox = context.findRenderObject();
          final localOffset = getBox.globalToLocal(details.globalPosition);
          setState(() {
            x = localOffset.dx;
            y = localOffset.dy;
          });
        },
        child: ElevatedButton(
          onPressed: null,
          child: Text('Button'),
        ),
      ),
    );
  }
}
//Actually I'm using AAA widget in a List like this.
          Container(
            width: double.infinity,
            height: double.infinity,
            child: Column(
              children: widgetList,
            ),
          ),

但在我的代码中,当我用手指移动小部件时,小部件的原点始终固定在左上角。 我尝试使用 Transform 而不是 Transform.translate 并更改 origin: 属性,但效果不佳。

像这样:

gif image

我希望原点在我最先接触的位置。 抱歉我的英语不好,但请给我一些建议!

0 个答案:

没有答案