본문 바로가기
flutter

Flutter[플러터] / Table 을 사용하여 그리드 정렬하기 (표만들기, 테이블, 셀 정렬) Table (Flutter Widget of the Week)

by ch5c 2025. 4. 29.
반응형

Table class

자식 위젯에 테이블 레이아웃 알고리즘을 사용하는 위젯입니다.

https://youtu.be/_lbE0wsVZSw

공식 문서 코드

 


Table 클래스는 우리가 흔히 아는 표라고 생각하면 편하다.

이제 html 로 만들면 편하겠지만 우린 플러터이기 때문에 정해준거 걍 쓰면 된다. 한번 알아보자.

하위 속성
속성명 타입 기본값 설명
children List<TableRow> [] 테이블에 표시할 행 목록
columnWidths Map<int, TableColumnWidth>? - 열의 너비를 결정하는 규칙을 설정
defaultColumnWidth TableColumnWidth FlexColumnWidth() 명시적으로 설정되지 않은 열의 기본 너비를 설정
textDirection TextDirection? - 열 정렬 방향을 설정
border TableBorder? - 테이블의 테두리 스타일을 설정
defaultVerticalAlignment TableCellVerticalAlignment TableCellVerticalAlignment.top 셀의 기본 수직 정렬 방식을 설정
textBaseline TextBaseline? - baseline 정렬 시 기준으로 사용할 텍스트 기준선 설정

 

일단 기본적인 사용을 하긴 위해선 좀 귀찮은 짓을 해야 한다.

맨 상위 속성 Table 로 해놓고 children 안에 TableRow, 또 그 children 안에서 이제 TableCell 사용해주면 되는 구조다.

Table(
  children: [
    TableRow(
      children: [
        TableCell(
          child: Container(),
        ),
        // TODO Cell
      ],
    ),
  ],
),

 

사실 위의 공식 예제를 보면 알겠지만 굳이 TableCell 을 사용하지 않아도 좋다.

TableRow 까지만 하고 그 안에는 자기가 원하는 것을 넣으면 되는 것이다.

허나 이제 TableCell 을 알아서 크기에 맞춰진다는 점을 참고하면 졸을 것 같다.

 

이번엔 예의 주시할것은 columnWidths 인데 이걸로 각 셀마다의 비율을 설정해줄 수 있다.

만약 TableCell 이 3개가 있다면 그 셀마다 크기를 다르게 설정해줄수 가 있다.

근데 보면 Map<int, TableColumnWidth> 을 받는 좀 이상한 친구기 때문에 사용에 유의하도록 하자.

columnWidths: {
  0: IntrinsicColumnWidth(),
  1: FlexColumnWidth(),
  2: FixedColumnWidth(64),
},

 

예제에서 사용한것은 IntrinsicColumnWidth, FlexColumnWidth, FixedColumnWidth 이렇게 세개 있는데 간단하게 설명하자면 IntrinsicColumnWidth() 는 하위 위젯에 크기에 따라 차지하는 크기도 달라지는 왜 있는지 모르겠는(?) 위젯이고 FlexColumnWidth() 는 이름부터 Flex 달린것이 동작하는 것도 차지할 수 있는 공간 다 차지해버리는 녀석이다. FixedColumnWidth() 위젯은 double 값을 넣을 수 있는 비율로 계산하는 것이 아닌 실질적인 값으로 크기를 넣을 수 있게 해주는 위젯이 되겠다.

 

보면 굉장히 자유롭게 셀을 제작할수 있게 되어있다. 그래서 생각이상으로 표만들기에 활용도가 높을것 같고 GridView 느낌도 나서 제작도 쉬울 것 같다. 여하튼 이렇게 Table 위젯에 대해 알아보았고 도움이 되었길 바라며 마치겠다.

반응형

 

반응형