LoginSignup
33
24

More than 3 years have passed since last update.

Flutterで動的にWidgetを作成する時の方法

Posted at

はじめに

ListViewやPageViewerなどの要素数が動的な場合のUIを作る場合のコーディング方法についてまとめた記事です。

for文を使う方法

引数だけ変えたWidgetを複数個指定する場合にはfor文 (for-each含む) を利用した方が便利です。もちろん、if文も同様に利用可能です。

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisSize: MainAxisSize.min,
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        for (int i = 0; i < 10; i++)
          if (i == hogehoge) ...[MyCircleAvatar(true, i)] else CircleAvatar(false, i),
      ],
    );
  }

Listを使う方法

例えば以下のサンプルのように、List型で管理し、必要なWidgetを動的にaddしていけば良いです。

  @override
  Widget build(BuildContext context) {
    var contentWidgets = _makeWidgets();
    return Column(
        mainAxisAlignment: MainAxisAlignment.center, children: contentWidgets);
  }

  List<Widget> _makeWidgets() {
    var contentWidgets = List<Widget>();

    contentWidgets.add(Text('Hello'));
    if (hoge) {
      contentWidgets.add(Padding(
        padding: EdgeInsets.only(top: 10, right: 20, bottom: 30, left: 40),
        child: Text('world'),
      ));
    }

    return contentWidgets;
  }
33
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
24