在Flutter中用两根手指拖动手势

时间:2019-01-05 14:51:37

标签: dart flutter

我正在使用Flutter构建一个研究应用程序,我想实现一个类似的“ 9孔钉测试”,例如Apple ResearchKit的this one

我已经通过使用DraggableDragTarget构建了此测试。问题在于该解决方案仅用一根手指工作,并且用户必须使用两根手指。因此,我寻找了另一个解决方案并找到了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),
          ),
        ],
      ),
    ),
  ),
);
}
}

简而言之,用户应该可以用两根手指拖动一个圆圈到另一根手指上。我将非常感谢各种帮助。如果有人可以告诉我如何识别这种特定手势,那将是惊人的。

0 个答案:

没有答案