私はつい最近フラッターになり、それを愛していますが、UIの変更にこだわっています。どんな助けも大歓迎です!
私の目標は、青色の背景のアイコンを持つ円形ボタンを取得することですが、外側の周囲には濃い青色の境界線があります。写真が添付されています。
私のアプローチは:
境界線を追加する方法がわからないため、または問題へのアプローチ方法を考慮してそれが可能かどうかがわからないため、ステップ3でスタックしました。現時点では特定の色は重要ではありません。後でテーマを変更します。
これは私が現在賢明なコードを持っているものです:
var messageBtn = new Row(
children: <Widget>[
new Padding(
padding: const EdgeInsets.all(20.0),
child: new RawMaterialButton(
onPressed: _messages,
child: new Padding(
padding: const EdgeInsets.all(20.0),
child: new Icon(
Icons.message,
size: 30.0,
color: Colors.white,
),
),
shape: new CircleBorder(),
fillColor: Colors.deepPurple,
),
),
new Padding(
padding: const EdgeInsets.all(8.0),
child: new Text(
'Send Messages',
style: new TextStyle(
fontSize: 20.0,
),
)),
],
);
これが生成されます: スクリーンショットを参照
これが欲しい: 2番目のスクリーンショットを見る
こんにちはキャスリーン、ようこそ!
MaterialButton
を構成するウィジェットを少し深く掘り下げることで、目的を達成できます。
最初に Ink ウィジェットが必要です。これにより、 BoxDecoration を使用したより柔軟なスタイル設定が可能になります。
Ink
は、onTap
を認識してスプラッシュ効果を描画する InkWell ウィジェットを含むことができます。デフォルトでは、スプラッシュは収容ボックスの端まで続きますが、InkWell
に本当に大きなborderRadius
を指定することで円形にすることができます。
これが後のボタンの例です。
Material(
child: Ink(
decoration: BoxDecoration(
border: Border.all(color: Colors.indigoAccent, width: 4.0),
color: Colors.Indigo[900],
shape: BoxShape.circle,
),
child: InkWell(
//This keeps the splash effect within the circle
borderRadius: BorderRadius.circular(1000.0), //Something large to ensure a circle
onTap: _messages,
child: Padding(
padding:EdgeInsets.all(20.0),
child: Icon(
Icons.message,
size: 30.0,
color: Colors.white,
),
),
),
)
),
結果は次のとおりです。