Flutterでは、ユーザーインタフェースのレイアウトを構築する際にRow
やColumn
などのウィジェットを使って、水平方向や垂直方向に子ウィジェットを配置します。
コレクションなどで動的なコンテンツを扱う場合、プログラム的にこれらのウィジェットを生成する方法が必要です。この記事では、map()
関数とforループを使用して、Row
やColumn
ウィジェット内に動的にウィジェットを生成する方法を紹介します。
map()関数を使用する方法
map()
関数はリストの各要素に対して指定した関数を実行し、新しいコレクションを生成します。この機能を利用して、リストの各要素からウィジェットを生成し、それをRow
やColumn
の子として追加することができます。
以下にサンプルコードを示します:
class MyWidget extends StatelessWidget {
final List<String> items = ["Item 1", "Item 2", "Item 3"];
Widget build(BuildContext context) {
return Column(
children: items.map((item) {
return Text(item);
}).toList(),
);
}
}
この例では、文字列のリストitems
をmap()
を使って、各文字列に対応するText
ウィジェットに変換しています。そして、toList()
でリストに変換してColumn
のchildren
に渡しています。
forループを使用する方法
forループを使用する方法も非常に直感的です。ループを回しながらウィジェットリストを生成し、それをRow
やColumn
のchildren
に割り当てることができます。
class MyWidget extends StatelessWidget {
final List<String> items = ["Item 1", "Item 2", "Item 3"];
Widget build(BuildContext context) {
return Column(
children: [
for (final item in items) Text(item),
],
);
}
}
このコードでは、items
リストをforループで回し、各要素をText
ウィジェットに変換してchildren
リストに追加しています。そして、そのchildren
リストをColumn
のchildren
プロパティに設定しています。
まとめ
Row
やColumn
で動的にウィジェットを生成する方法は、map()
関数やforループを使うことで容易に実装できます。
0 件のコメント:
コメントを投稿