как установить высоту контейнера (), у которого есть дочерний элемент GridView ?? трепетать - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь сделать галерею картинок в формате GIF. Я хочу обернуть gridview контейнером, но для контейнера нужно установить высоту. как я могу установить высоту Container () относительно ?? Я хочу сделать для gridview.items растет, высота контейнера тоже растет.

введите описание изображения здесь

красная линия - текущая высота контейнера, которую я установил.

            Container(
              margin: EdgeInsets.only(top: 10),
              padding: EdgeInsets.symmetric(horizontal: 10),
              height: 1000,
              width: double.infinity,
              child: GridView.builder(
                  physics: NeverScrollableScrollPhysics(),
                  itemCount: 6,
                  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 3,
//                      childAspectRatio: 3 / 2,
//                      crossAxisSpacing: 10.0,
//                      mainAxisSpacing: 10.0,
                  ),
                  itemBuilder: (context, index) => ChangeNotifierProvider.value(
                        value: videos[index],
                        child: VideoGifItem(),
                      )),
            ),

1 Ответ

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

Если вам нужно, чтобы виджет GridView занимал место в зависимости от количества имеющихся в нем элементов.

Вы можете установить для свойства shinkWrap виджета GridView значение true.

Я добавил демонстрацию, используя ваш код в качестве примера:

Container(
        margin: EdgeInsets.only(top: 10),
        padding: EdgeInsets.symmetric(horizontal: 10),
        width: double.infinity,
        child: GridView.builder(
          // set the shrinkWrap property to true
          shrinkWrap: true, // new line
          physics: NeverScrollableScrollPhysics(),
          itemCount: 6,
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3,
//                      childAspectRatio: 3 / 2,
//                      crossAxisSpacing: 10.0,
//                      mainAxisSpacing: 10.0,
          ),
          itemBuilder: (context, index) => ChangeNotifierProvider.value(
            value: videos[index],
            child: VideoGifItem(),
          ),
        ),
      ),
...