FlutterのCard内でInkWellを使用した際にタップエフェクトをカード範囲内にのみ適用させる
はじめに
Flutterを使って個人開発をしている際、Card
をタップできるようにしたい場面があった。
タップエフェクトを与えたかったのでInkWell
を利用したところ、タップエフェクトがCard
からはみ出て四角く表示されてしまった。
これをエフェクトをカード範囲内のみに適用させる方法をメモとして残しておく。
対応方法
Card
のclipBehavior
プロパティにClip.hardEdge
を適用させることでタップエフェクトをカード範囲内のみに適用させることができる。
Card(
clipBehavior: Clip.hardEdge,
child: InkWell(
onTap: () {},
child: SomeWidget(),
),
),
注意点
今回のような要素がはみ出す場面にはClip
は有効な手段だが、要素をクリップする際にはパフォーマンスコストがかかるとのこと。
クリップする要素数が多かったり、パフォーマンスが求められる際は気をつけるようにしたい。