27.5 手势冲突(Listener处理)
1.源代码
import 'package:flutter/material.dart';
void main () => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
double topDistance = 80.0;
double leftDistance = 0.0;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("手势检测"),),
body: Stack(
children: <Widget>[
Positioned(
top: topDistance,
left: leftDistance,
child: Listener(
onPointerDown: (details) {
print("down");
},
onPointerUp: (details) {
print("up");
},
child: GestureDetector(
child: CircleAvatar(child: Text("A"),),
onPanUpdate: (DragUpdateDetails e) {
setState(() {
leftDistance += e.delta.dx;
//topDistance += e.delta.dy;
});
},
onPanEnd: (DragEndDetails e){
print(e.velocity);
},
),
),
)
],
)
)
);
}
}
2.解释源代码
import 'package:flutter/material.dart';
void main () => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
double topDistance = 80.0;
double leftDistance = 0.0;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("手势检测"),),
body: Stack(
children: <Widget>[
Positioned(
top: topDistance,
left: leftDistance,
child: Listener(
onPointerDown: (details) {
print("down");
},
onPointerUp: (details) {
//Listener处理,此出会触发
print("up");
},
child: GestureDetector(
child: CircleAvatar(child: Text("A"),),
onPanUpdate: (DragUpdateDetails e) {
setState(() {
leftDistance += e.delta.dx;
//topDistance += e.delta.dy;
});
},
onPanEnd: (DragEndDetails e){
print(e.velocity);
},
),
),
)
],
)
)
);
}
}
3.效果图