Flutter:是否可以在扩展图块中创建多个元素?

时间:2019-03-04 12:43:53

标签: dart flutter flutter-layout

我使用Flutter,我想创建一个ExpansionTile列表,在同一图块中包含2个元素。

例如:

  

名称:/ .......空格... /雪。

     

firstname:/ .......空格... / John。

     

位置:/ .......空白... /温特费尔德。

但是我不知道是否可能。(在互联网和文档上进行了一些搜索之后)

我曾尝试在儿童财产中使用Column,Row ..,但没有任何效果。

有人可以解决吗?

我的代码:

class Entry{
 const Entry(this.title,[this.children = const <Entry>[]]);
 final String title;
 final List<Entry> children;
 }

 const List<Entry> data = <Entry> [
 Entry(
 '   Profile',
 <Entry>[
   Entry('Jhon'),
   Entry('Snow'),
   Entry('Winterfell'),
 ],
),

...

  class Collapsible extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemBuilder: (BuildContext context, int index) => EntryItem(data[index]),
      itemCount: data.length,
    );
  }
}
class EntryItem extends StatelessWidget{
  const EntryItem(this.entry);

  final Entry entry;

  Widget _buildTiles(Entry root){
    if(root.children.isEmpty) return ListTile(title: Text(root.title));
    return ExpansionTile(
      backgroundColor: Colors.white30,
        initiallyExpanded: true,
        key: PageStorageKey<Entry>(root),
        title: Center(child: Text(root.title),),
    children: root.children.map(_buildTiles).toList()
    );
  }
  @override
  Widget build(BuildContext context) {
    return _buildTiles(entry);
  }
}

1 个答案:

答案 0 :(得分:1)

(已编辑)

这是您要找的吗?

class Collapsible extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemBuilder: (context, i) {
        if(i >= data.length) return null;
        return ExpansionTile(
          title: Text('name: ${data[i].title}'),
          children: [
            Text('firstname: ${data[i].children[0].title}'),
            Text('firstname: ${data[i].children[1].title}'),
          ]
        );
      },
      itemCount: data.length,
    );
  }
}
相关问题