2017-06-14 2 views
1

画面上でタップが発生した場所のx/y座標を知りたいです。私はGestureDetectorを見つけましたが、正確にタップがどこで行われたか教えてくれないようです。Flutterを使用して、ユーザーが画面上でタップした場所を検出するにはどうすればよいですか?

ここでは、これまでに私のコードです:

タップを登録し
import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MyWidget()); 
} 

class MyWidget extends StatelessWidget { 

    @override 
    Widget build(BuildContext context) { 
    return new GestureDetector(
     onTap:() => print('tapped!') 
    ); 
    } 
} 

...しかしタップから始めどこか私はを見つけたのですか?

答えて

3

onTapDownとonTapUpを確認すると、より詳細な作業が可能になります。

class MyWidget extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new GestureDetector(
     onTap:() => print('tapped!'), 
     onTapDown: (TapDownDetails details) => _onTapDown(details), 
     onTapUp: (TapUpDetails details) => _onTapUp(details), 
    ); 
    } 

    _onTapDown(TapDownDetails details) { 
    var x = details.globalPosition.dx; 
    var y = details.globalPosition.dy; 
    print("tap down " + x.toString() + ", " + y.toString()); 
    } 

    _onTapUp(TapUpDetails details) { 
    var x = details.globalPosition.dx; 
    var y = details.globalPosition.dy; 
    print("tap up " + x.toString() + ", " + y.toString()); 
    } 
} 
+0

クール!私はなぜonTapが私に詳細を与えないのだろうと思う。 –

+0

良い質問です。あなたは彼らに空ではなく細部を提供するように頼むべきです。 :) – Branflake2267

+0

onTapは、あなたがその位置を気にしない一般的なケースを意味します。 onTapハンドラが引数をとった場合、onTapハンドラでは誰も無視された引数を持つことになり、複雑さと認知的オーバーヘッドが増加します。 onTapDownとonTapUpは、タッチを検出するだけでなく、もっと魅力的なことをしたい場合のエッジケースです。 –

関連する問題