Vertical viewport was given unbounded height.

ref: https://stackoverflow.com/a/70920035

error8

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 자체를 만든 저의 잘못이었습니다… 스크롤이 되면 안돼서 아예 구조를 변경했습니다)

댓글남기기