タッチイベントを受け取りたい場合、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: ~省略~,
),
)
参考になれば幸いです(*’ω’*)
コメントを残す