Как заставить Контейнер менять свой размер в зависимости от дочерних элементов - PullRequest
0 голосов
/ 06 августа 2020

У меня есть элементы ListView, внутри которых есть столбец с элементами Text. Дело в том, что текст всегда бывает разного размера, и мне нужно добавить true и добавить Flexible to Container. Дело в том, что некоторые элементы Text очень короткие, поэтому между этими элементами очень большие промежутки, но я не могу уменьшить размер контейнера, иначе большой текст не поместится. Как мне заставить Контейнер определять размер в зависимости от размера элементов внутри? ограничения: BoxConstraints (minHeight: 80, maxHeight: 180) полностью игнорирует minHeight

                    ListView.builder(primary: false, shrinkWrap: true, itemCount: r[index]['rasp'].length, 
                    itemBuilder: (BuildContext cotext, ind){
                      return Container(
                      color: Colors.red,
                      constraints: BoxConstraints(
                        minHeight: 80,
                        maxHeight: 180,
                      ),
                        child: Row(
                          children: <Widget>[
                            Container(
                              child: Column(
                              mainAxisAlignment: MainAxisAlignment.start,
                              crossAxisAlignment: CrossAxisAlignment.start,
                                children: <Widget>[
                                  Text(r[index]['rasp'][ind]['time'].substring(0, 5), style: themes[0][current]["time_start"]),
                                  Text(r[index]['rasp'][ind]['time'].substring(8, 13), style: themes[0][current]["time_end"]),
                                ],
                              ),
                            ),
                            Flexible(
                              child: Container( // ЭТОТ
                                color: Colors.yellow, 
                                padding: EdgeInsets.only(left: 10),
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.start,
                                  crossAxisAlignment: CrossAxisAlignment.start,
                                  children: <Widget>[
                                    Text(r[index]['rasp'][ind]['type'], style: pairType(r[index]['rasp'][ind]['type']),),
                                    Flexible(child: Text(r[index]['rasp'][ind]['predmet'], softWrap: true, style: themes[0][current]["pair_name"])),
                                    RichText(
                                      text: TextSpan(
                                        text: r[index]['rasp'][ind]['aud'],
                                        style: themes[0][current]["aud"],
                                        children: <TextSpan>[
                                          TextSpan(text: " - " + r[index]['rasp'][ind]['place'], style: themes[0][current]["place"]),
                                        ],
                                      ),
                                    ),
                                    Flexible(child: Text(r[index]['rasp'][ind]['prepod'], softWrap: true, style: themes[0][current]["teacher"])),
                                  ],
                                ),
                              ),
                            )
                          ],
                        ),
                      );
                    }
                    )

Как вы можете видеть на картинке, почему желтый контейнер меняет свою ширину в зависимости от размера элементов внутри. Мне тоже нужно изменить высоту

изображение 1

1 Ответ

0 голосов
/ 06 августа 2020

Я решил это добавлением mainAxisSize: MainAxisSize.min

...