【发布时间】:2020-12-13 17:10:20
【问题描述】:
我很难理解delta、globalPosition、localPosition 和primaryDelta 的属性DragUpdateDetails。我为DragUpdateDetails 阅读了documentation,但它并没有太大帮助。
我发现有人问了一些问题:What is primaryDelta and delta in DragUpdateDetails 和 What is the difference between globalposition and localposition in flutter?。第一个没有答案,而第二个只有globalPosition 和localPosition 的解释。
这是一个拖拽容器的示例代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
double _xPosition = 0;
double _yPosition = 0;
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: SafeArea(
child: Container(
child: Stack(
children: [
Positioned(
top: _yPosition,
left: _xPosition,
child: GestureDetector(
onPanUpdate: (DragUpdateDetails e) {
setState(() {
_xPosition += e.delta.dx;
_yPosition += e.delta.dy;
});
},
child: Container(
height: 200,
width: 200,
color: Colors.black,
),
),
)
],
),
),
),
),
);
}
}
在这个例子中,为什么我们使用delta 而不是globalPosition 或localPosition。我的意思是当然拖动不会按预期工作,但如何知道何时使用delta 或globalPosition 或localPosition?
有人可以快速解释一下这些属性吗?这真的意味着很多。谢谢!
【问题讨论】:
标签: flutter