我正在使用Flutter构建一个研究应用程序,我想实现一个类似的“ 9孔钉测试”,例如Apple ResearchKit的this one。
我已经通过使用Draggable和DragTarget构建了此测试。问题在于该解决方案仅用一根手指工作,并且用户必须使用两根手指。因此,我寻找了另一个解决方案并找到了ImmediateMultiDragGestureRecognizer,但是说实话我不知道如何使用它。该文档并没有真正帮助我,我了解Flutter本身并没有采取这种姿态,因为这是一个特定的问题。
这是我到目前为止得到的:
class HolePegTestPage extends StatefulWidget {
@override
_HolePegTestPageState createState() => new _HolePegTestPageState();
}
class _HolePegTestPageState extends State<HolePegTestPage> {
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0.0,
backgroundColor: Colors.blue,
title: Text("9-Hole Peg Test"),
),
body: Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
RawGestureDetector(
gestures: <Type, GestureRecognizerFactory>{
ImmediateMultiDragGestureRecognizer:
GestureRecognizerFactoryWithHandlers<
ImmediateMultiDragGestureRecognizer>(
() => ImmediateMultiDragGestureRecognizer(),
(ImmediateMultiDragGestureRecognizer instance) {
instance
..acceptGesture(2)
..addPointer(PointerDownEvent(pointer: 1))
..addPointer(PointerDownEvent(pointer: 2));
})
},
child: Container(
height: 90.0,
width: 90.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(90.0),
color: Colors.blue),
),
),
Container(
height: 90.0,
width: 90.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(90.0),
color: Colors.lightBlue),
),
],
),
),
),
);
}
}
简而言之,用户应该可以用两根手指拖动一个圆圈到另一根手指上。我将非常感谢各种帮助。如果有人可以告诉我如何识别这种特定手势,那将是惊人的。