работа с расширением и без расширения панели flutter

#flutter

#флаттер

Вопрос:

У меня есть сценарий, в котором мне нужна панель расширения и не расширения. Я изо всех сил пытаюсь начать

вот часть моего кода

           children: categoryAllListData.map<ExpansionPanelRadio>((item) {

return (item.catlist.length > 0)
                    ? ExpansionPanelRadio(
                        value: item.id,
                        headerBuilder: (BuildContext context, bool isExpanded) {
                          return ListTile(
                            title: Text(item.name),
                          );
                        },
                        body: _createCategoryListExpandedSubTitle(item.catlist),
                      )
                    : ExpansionPanelRadio(
                        value: item.id,
                        //  isExpanded:false,
                        headerBuilder: (BuildContext context, isExpandeds) {
                          return ListTile(
                            title: Text(item.name),
                          );
                        },
                        body: Container(),
                      );
              }).toList(),
            );
          }
 

но я не могу удалить панель, пожалуйста, помогите достичь этого

Ответ №1:

Возможно, ваше условие (item.catlist.length > 0) должно быть выше в вашем алгоритме и работать с ExpansionPanel только в том случае, если условие правильное.

Редактировать :

Я думаю, вы не хотите отображать список, когда (item.catlist.length > 0) вы можете использовать видимый виджет и ваше состояние

 Visible(
  visible : item.catlist.length > 0,
  child : Column(
    children : categoryAllListData.map<ExpansionPanelRadio>((item) {
      return ExpansionPanelRadio(
        value: item.id,
        headerBuilder: (BuildContext context, bool isExpanded) {
          return ListTile(
            title: Text(item.name),
          );
        },
        body: _createCategoryListExpandedSubTitle(item.catlist))
        }).toList()
))
 

Комментарии:

1. Возможно, вам захочется использовать видимый виджет, когда вы не хотите отображать список

2. Мне нужно показать, но оно должно быть заключено в контейнер, а не в expansionradio

3. Хорошо, поэтому вместо того, чтобы использовать вторую панель расширения (не расширенную), вы можете использовать текстовый виджет : item.catlist.length> 0? ExpansionPanelRadio(…) : Текст (item.name )