[Flutter]GestureDetectorで余白部分をタップしても反応しない場合の対処法

タッチイベントを受け取りたい場合、GestureDetectorでonTap()を指定したりすると思います。

以下のようなレイアウトをContainerやColumn等で作ったとして、GestureDetectorのchildに指定すると、テキスト部分などはonTap()が呼ばれますが、空白部分(なにもWidgetが存在しない部分)はタップしてもonTap()は呼ばれません。

対処法① behaviorにHitTestBehavior.opaqueを指定する

GestureDetectorのbehavior属性にHitTestBehavior.opaqueを指定する。

GestureDetector(
  behavior: HitTestBehavior.opaque,
  onTap: () => _goCommentDetailScreen(comment.id, user),
  child: Container(
    padding: EdgeInsets.symmetric(horizontal: 16),
    child: ~省略~,
  ),
)

対処法② タップさせたい領域にcolorを指定する

基本的に①の方法でOKですが、別の方法として。。

GestureDetectorは、何も指定していない領域をタップ領域から外しているようで、color属性を指定すればタップ領域に入れてもらえるようです。

GestureDetector(
  onTap: () => _goCommentDetailScreen(comment.id, user),
  child: Container(
    color: Colors.white,
    padding: EdgeInsets.symmetric(horizontal: 16),
    child: ~省略~,
  ),
)

参考になれば幸いです(*’ω’*)


投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA