Can be tapped by Flutter

EveryDaySoft代表の永田です。

様々な座標に変換した場合でもタップ可能にする方法を紹介いたします。

リンク先にコードを記載しています。

https://gist.github.com/daisukenagata/2258cb81c45650896edfc2eefb449964

挙動

デモでは座標を変換した場合にタップ動作で文字を消す動作を実施しています。

Padding,Matrix4.translationValues,などで座標を変換した場合にFlutterではボタン操作、タップ操作が無効になります。そのような時にGlobalKeyを使用して座標を取得、同じ位置に設定してボタン操作、タップ操作を有効にするロジックです。複数になる場合はListなどで設定する必要がありますし、TextFieldなどを設定する場合はGlobalKey同士がコンフリクトを起こす可能性もあるので、ケースにより確認する必要があると思います。他にもターゲットUIのタップ操作をIgnorePointerなどで透明状態にし、後面をタップさせるような設計でも可能だと思います。

このような、よくあるケースの解決策がなかったので、紹介させていただきました。

貴重なお時間、お読み下さいまして誠にありがとうございます。