颤动:是否可以在扩展磁贴中创建多个元素?

问题描述 投票:0回答:1

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

例如 :

名称:/ .......白色空间...... /雪。

名字:/ .......白色空间...... /约翰。

位置:/ .......白色空间...... / Winterfell。

但我不知道是否可能。(在互联网和doc上搜索之后)

我曾尝试使用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);
  }
}
dart flutter flutter-layout
1个回答
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,
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.