Как сделать список в списке? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь добавить Список в Список ExpansionTiles, но получаю кучу ошибок при попытке его создать. Кто-нибудь может мне помочь?

Widget build(BuildContext context) {
return ListView.builder(
  itemBuilder: (BuildContext context, int index) {
    return Container(
      padding: EdgeInsets.symmetric(vertical: 7, horizontal: 7),
      child: ExpansionTile(
        leading: Icon(Icons.explore, color: this.colors[index]),
        title: RichText(text: title(firstSection[index], index)),
        trailing: Icon(
          Icons.keyboard_arrow_down,
          color: this.colors[index],
        ),
        backgroundColor: Colors.indigo,
        initiallyExpanded: true,
        onExpansionChanged: (bool expanding) => setState(() => {this.colors[index] = (expanding) ? Colors.white : Colors.black}),
        children: <Widget>[
          ListView.builder(
            itemCount: tiles[index].length,
            itemBuilder: (BuildContext context, int indexx) {
              return tiles[index][indexx];
            },
          )
        ],
      ),
    );
  },
  itemCount: firstSection.length,
);

Мой список выглядит так: List<List<CreateTiles>> tiles;

Я уже проверил, и проблема не в классе "CreateTiles", а в другом моем просмотре списка внутри ExpansionTile

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вот пример Listview внутри Listview

   ListView.builder(
    itemCount: 5,
    itemBuilder: (context, i) {
      return ListView.builder(
        itemCount: 5,
        physics: ClampingScrollPhysics(),
        shrinkWrap: true,
        itemBuilder: (context, j) {
          return ListTile(
            title: Text("Item $i, $j"),
          );
        },
      );
    },
  )
1 голос
/ 13 февраля 2020

Это потому, что вы не можете дать неограниченную высоту внутри неограниченной высоты, первый просмотр списка требует заданную c высоту, заданную детьми.

Это можно исправить установкой shrinkWrap = true во втором (внутреннем) ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...