Насколько я понимаю, вы хотите динамически устанавливать размер для элемента GridView. Есть два способа: вычислять вручную и устанавливать каждый раз в зависимости от вашего содержимого или использовать SliverGridDelegateWithMaxCrossAxisExtent . Таким образом, в вашем GridView.builder вы можете добавить следующий атрибут:
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent:
200.0, // maximum size of item (on small screens 1 item per row, on bigger as many as can fit with 200.0 px width)
childAspectRatio: 5 / 6,
crossAxisSpacing: 20,
mainAxisSpacing: 20,
),
Он дает вам доступ к дополнительным инструментам для управления элементами GridView с сохранением соотношения сторон, он также имеет максимальный размер, который не должен превышать