飞镖向儿童添加列表

时间:2018-09-03 23:59:21

标签: dart flutter

我是飞镖新手,我只想使用地图( store.state.availablePage.map )向ListView的子级添加数据列表,但是我已经在其中添加了一些项目ListView。

这是我想要的示例代码:

class MgDrawer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StoreBuilder<AppState>(
      builder: (context, store) {
        return Drawer(
          child: ListView(
            padding: EdgeInsets.zero,
            children: <Widget>[
              Text("Title"),
              store.state.availablePage.map((value) {
                return ListTile(
                  title: Text("Title"),
                  onTap: () {},
                );
              }).toList(),
            ],
          ),
        );
      },
    );
  }
}

请帮助我如何实现这一目标?

更新:以上代码未编译。

3 个答案:

答案 0 :(得分:1)

如果由于某种原因某人无法使用“ ...”运算符,那么还有另一种解决方案。它不如“ ...”运算符那么优雅,但它也可以使用。

您可以只在列表末尾使用..addAll(list)。

这是给定示例中的样子:

class MgDrawer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StoreBuilder<AppState>(
      builder: (context, store) {
        return Drawer(
          child: ListView(
            padding: EdgeInsets.zero,
            children: <Widget>[
              Text("Title"),
            ]..addAll(store.state.availablePage.map((value) {
              return ListTile(
                title: Text("Title"),
                onTap: () {},
              );
            }).toList(),),
          ),
        );
      },
    );
  }
}

答案 1 :(得分:0)

您可以在此Video中找到此示例,他还拥有其他一些小部件以及如何逐个使用它。

希望有帮助。

答案 2 :(得分:0)

您的ListView具有Text(Widget)和一个Array of ListTile(Array of Widgets),表示ListView(children: [Widget, [Widget]])

但是它应该是ListView(children: [Widget1, Widget2, Widget3,...])。下面的代码可能有帮助

 class MgDrawer extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return StoreBuilder<AppState>(
          builder: (context, store) {
            List<Widget> list = store.state.availablePage.map((value) {
              return ListTile(
                title: Text("Title"),
                onTap: () {},
              );
            }).toList();
            list.insert(0, Text("Title"));
            return Drawer(
              child: ListView(
                padding: EdgeInsets.zero,
                children: list,
              ),
            );
          },
        );
      }
    }