본문 바로가기
Flutter

Flutter Error: Vertical viewport was given unbounded height

by 난타코다옹 2023. 10. 17.

목차

    오류 메시지: Vertical viewport was given unbounded height.

    원인: 이 오류는 스크롤 가능한 위젯이 다른 스크롤 가능한 위젯 내에 중첩되어 있을 때 발생합니다. 이 경우, 스크롤 가능한 위젯에 높이 제한이 없어서 자식 위젯이 무한정 확장되기 때문입니다.

    해결: 이 문제를 해결하려면 스크롤 가능한 위젯의 높이를 제한해야 합니다. 다음과 같은 방법을 시도해 볼 수 있습니다:

    1. GridView.count 대신 ListView.builder를 사용하고, shrinkWrap 속성을 true로 설정합니다.
    @override
    Widget build(BuildContext context) {
      return new Material(
        color: Colors.deepPurpleAccent,
        child: new ListView.builder(
          shrinkWrap: true,
          itemCount: _row * _column,
          itemBuilder: (BuildContext context, int index) {
            return new Center(
              child: new CellWidget(),
            );
          },
        ),
      );
    }
    1. SingleChildScrollView 대신 Column을 사용하고, Expanded 위젯을 사용하여 자식 위젯의 높이를 제한합니다.
    @override
    Widget build(BuildContext context) {
      return new Material(
        color: Colors.deepPurpleAccent,
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Expanded(
              child: new GridView.count(
                crossAxisCount: _column,
                children: new List.generate(_row * _column, (index) {
                  return new Center(
                    child: new CellWidget(),
                  );
                }),
              ),
            ),
          ],
        ),
      );
    }

    분석: 이 문제는 스크롤 가능한 위젯을 중첩할 때 발생하는 일반적인 문제입니다. 위의 두 가지 해결책 중 하나를 사용하여 높이를 제한하면 오류가 해결됩니다.

    결론: 스크롤 가능한 위젯을 중첩할 때는 높이를 제한해야 합니다. 이를 위해 shrinkWrap 속성이나 Expanded 위젯을 사용할 수 있습니다.