[Flutter] RaisedButtonでタップ時のアニメーションを保持したグラデーションボタンを作る
RaisedButtonでグラデーションボタン作ろう!と思ったら、まず思いつく構成が多分これ。
RaisedButton(
  onPressed: () {},
  child: Container(
    decoration: BoxDecoration(
      gradient: LinearGradient(
        colors: [Colors.black, Colors.transparent],
      ),
    ),
    child: const Text('button')
  ),
);RaisedButtonの中にContainerを用意し、decorationを使ってグラデーション背景を作れる。
ただ、このやり方だとボタンの上にグラデーションタイルを乗っけてしまっているため、ボタンをタップしたときに波紋状に広がるアニメーションが機能しない(隠れてしまう)。
アニメーションを表示するためには、Inkウィジェットが使える。
RaisedButton(
  onPressed: () {},
  child: Ink(
    decoration: BoxDecoration(
        gradient: LinearGradient(
          colors: [Colors.black, Colors.transparent],
        ),
      ),
    child: Container(
      child: const Text('button')
    ),
  ),
);正確にはRaisedButtonのRippleアニメーションをInkウィジェットで代替する形になる。
