【问题标题】:Flutter : Is it possible to create multiple elements in a expansion tile?Flutter:是否可以在扩展图块中创建多个元素?
【发布时间】:2019-03-04 12:43:53
【问题描述】:

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

例如:

name :/.......White-Space....../ Snow.

firstname :/.......White-Space....../ John.

位置:/.......White-Space....../ Winterfell。

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

我尝试在儿童财产中使用 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】:

    (已编辑)

    这就是你要找的吗?

    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,
        );
      }
    }
    

    【讨论】:

    • 是的,但我不想在标题中使用 Row :/
    • 有什么理由不想使用 Row?
    • 因为我只想要标题中的部分标题(例如:个人资料)
    • 我明白了,其余的应该进入ExpandedListchildren属性?
    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2018-08-16
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多