Skip to content

UIコンポーネント

Flutterでは、カスタムウィジェットを作成してアプリのUIを柔軟にデザインできます。ウィジェットは、アプリのUIを構成する基本単位であり、再利用可能なコンポーネントとして設計することが重要です。

カスタムウィジェットを作成することで、アプリの一貫性を保ちつつ、特定のデザイン要件を満たすことができます。以下に、カスタムボタンの例を示します。

class CustomButton extends StatelessWidget {
final String label;
final VoidCallback onPressed;
CustomButton({required this.label, required this.onPressed});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
child: Text(label),
);
}
}
  • StatelessWidget: 状態を持たないウィジェットを作成する際に使用します。
  • StatefulWidget: 状態を持つウィジェットを作成する際に使用します。
  • Container: レイアウトや装飾を行うための基本的なウィジェットです。
  • Text: テキストを表示するためのウィジェットです。
  • Image: 画像を表示するためのウィジェットです。

RowColumnStackを使って複雑なレイアウトを構築できます。これらのウィジェットを組み合わせることで、柔軟なUIを実現できます。

Row(
children: <Widget>[
Icon(Icons.star),
Icon(Icons.star),
Icon(Icons.star),
],
)
  • Row: ウィジェットを横に並べます。
  • Column: ウィジェットを縦に並べます。
  • Stack: ウィジェットを重ねて配置します。

UIコンポーネントを使用する際のベストプラクティスや、よくある問題の解決策を以下に示します。

  • 一貫したデザイン: カスタムウィジェットを使用して、アプリ全体で一貫したデザインを保ちましょう。
  • レスポンシブデザイン: MediaQueryLayoutBuilderを使用して、さまざまなデバイスサイズに対応するレスポンシブなUIを構築します。
  • コードの再利用: ウィジェットを小さく分割し、再利用可能なコンポーネントとして設計することで、コードのメンテナンス性を向上させます。
  • レイアウトのオーバーフロー: レイアウトが画面サイズを超える場合、SingleChildScrollViewを使用してスクロール可能にします。
SingleChildScrollView(
child: Column(
children: <Widget>[
// ウィジェットのリスト
],
),
)
  • パフォーマンスの最適化: ListView.builderを使用して、大量のデータを効率的に表示します。
ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(items[index]),
);
},
)