我正在编写一个 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: 属性,但效果不佳。
像这样:
我希望原点在我最先接触的位置。 抱歉我的英语不好,但请给我一些建议!