[Flutter] BoxDecorationって何?

Flutterには、さまざまなウィジェットが用意されており、デザインをカスタマイズするための機能も充実しています。その中でも、BoxDecorationは、背景色やグラデーション、ボーダー、角丸など、ウィジェットの装飾を行うためによく使われます。

ここでは、BoxDecorationの使い方について、詳しく解説していきます。

目次

BoxDecorationとは

BoxDecorationは、ウィジェットの装飾を行うためのクラスです。主にContainerウィジェットと一緒に使われます。

以下は、BoxDecorationの定義方法です。

BoxDecoration({
  Color? color,
  DecorationImage? image,
  Border? border,
  BorderRadiusGeometry? borderRadius,
  List<BoxShadow>? boxShadow,
  Gradient? gradient,
  BlendMode? backgroundBlendMode,
  BoxShape shape = BoxShape.rectangle,
})

引数

  • color: 背景色を指定します。
  • image: 背景に使用する画像を指定します。
  • border: ボーダーを指定します。
  • borderRadius: 角丸を指定します。
  • boxShadow: 影を指定します。
  • gradient: グラデーションを指定します。
  • backgroundBlendMode: 背景の合成モードを指定します。
  • shape: ボックスの形状を指定します。

BoxDecorationの使い方

BoxDecorationは、Containerウィジェットのdecorationプロパティに設定することで、ウィジェットをカスタマイズすることができます。

以下は、BoxDecorationの使い方です。

背景色の変更

Containerブロックの背景を変更します。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BoxDecoration',
      home: Scaffold(
        appBar: AppBar(
          title: Text('BoxDecoration'),
        ),
        body: Center(
          child: Container(
            decoration: BoxDecoration(
              color: Colors.red,
            ),
            child: Text('Hello'),
          ),
        ),
      ),
    );
  }
}
上記サンプルコードの実行結果

背景色以外にも、以下のようなカスタマイズができます。(これ以降のサンプルコードはContainerブロックを抜粋した形で記載します。)

画像を背景に設定する

Container(
  decoration: BoxDecoration(
    image: DecorationImage(
      image: AssetImage('images/background.png'),
      fit: BoxFit.cover,
    ),
  ),
  child: Text(
    'Hello',
    style: TextStyle(fontSize: 36),
  ),
),
文字の背景に画像を読み込むことができる

ボーダーを設定する

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.blue,
      width: 2.0,
    ),
  ),
  child: Text('Hello'),
),

角丸を設定する

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.blue,
      width: 2.0,
    ),
    borderRadius: BorderRadius.circular(10.0),
  ),
  child: Text('Hello'),
),

影を設定する

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.blue,
      width: 2.0,
    ),
    boxShadow: [
      BoxShadow(
        color: Colors.grey,
        blurRadius: 10.0,
        spreadRadius: 5.0,
        offset: Offset(0.0, 5.0),
      ),
    ],
  ),
  child: Text('Hello'),
),

グラデーションを設定する

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.blue,
      width: 2.0,
    ),
    gradient: LinearGradient(
      colors: [Colors.blue, Colors.green],
      begin: Alignment.topLeft,
      end: Alignment.bottomRight,
    ),
  ),
  child: Text(
    'Hello',
    style: TextStyle(fontSize: 36),
  ),
),

上記の例では、青色から緑色にかけてのグラデーションを設定しています。

BoxShapeを設定する

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.blue,
      width: 2.0,
    ),
    shape: BoxShape.circle,
  ),
  child: Text(
    'Hello',
    style: TextStyle(),
  ),
),

上記の例では、BoxShapeをcircleに設定しているため、Containerウィジェットが円形になっています。

まとめ

BoxDecorationは、Containerウィジェットの装飾をカスタマイズするためによく使われます。背景色、画像、ボーダー、角丸、影、グラデーションなど、さまざまな設定が可能です。また、BoxShapeを指定することで、ウィジェットの形状を変更することもできます。

以上が、FlutterのBoxDecorationについての解説でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次