Flutter error, Vertical viewport was given unbounded height.
Vertical viewport was given unbounded height.
ref: https://stackoverflow.com/a/70920035
scrollable widget이 scrollable widget에 중첩됐을 때 나타나는 에러.
즉, 전부 scrollable이라 infinite width/height 상태가 되어 뷰를 그릴 수 없는 것.
상황에 따라 width, height를 지정해주거나 scrollable하지 않은 widget으로 중첩시킨다.
-
error code
import 'package:flutter/material.dart'; import '../../../../shared/document_type.dart'; class RegisterButtonArea extends StatelessWidget { const RegisterButtonArea({super.key}); @override Widget build(BuildContext context) { const List<DocumentType> documentTypes = DocumentType.values; return **Container**( child: **Column**(children: [ Text("거래내역 등록"), **GridView**.count( crossAxisCount: 2, children: [ for (int i = 0; i < documentTypes.length; i++) ...{ RegisterButtonWidget(documentType: documentTypes[i]) } ], ) ]), ); } }
Container안에 Column안에 GridView가 있는 상황인데 세 위젯 모두 scrollable하기 때문에 에러 발생.
-
solved
import 'package:flutter/material.dart'; import '../../../../shared/document_type.dart'; class RegisterButtonArea extends StatelessWidget { const RegisterButtonArea({super.key}); @override Widget build(BuildContext context) { const List<DocumentType> documentTypes = DocumentType.values; return **Container**( child: **Column**(children: [ Text("거래내역 등록"), **GridView**.count( **shrinkWrap: true,** crossAxisCount: 2, children: [ for (int i = 0; i < documentTypes.length; i++) ...{ RegisterButtonWidget(documentType: documentTypes[i]) } ], ) ]), ); } }
shrinkWrap = true로 만들어 GridView가 필요한 공간만 차지할 수 있도록 만든다.
(+ 그런데 이건 GridView 자체를 만든 저의 잘못이었습니다… 스크롤이 되면 안돼서 아예 구조를 변경했습니다)
댓글남기기