Table
위젯은 자식 위젯들을 테이블 레이아웃 알고리즘을 사용하여 배치하는 데 사용됩니다. 이는 행과 열로 구성된 2차원 레이아웃을 제공하며, 다양한 너비와 높이를 가진 열과 행을 유연하게 정의할 수 있습니다.
children
: TableRow
위젯의 리스트로 테이블의 행을 정의합니다.columnWidths
: 각 열의 너비를 정의합니다. TableColumnWidth
의 서브클래스를 사용하여 열 너비를 설정할 수 있습니다.defaultColumnWidth
: 모든 열에 적용될 기본 너비를 정의합니다. 기본값은 FlexColumnWidth
입니다.border
: 테이블에 테두리를 추가합니다. TableBorder
를 사용하여 설정할 수 있습니다.defaultVerticalAlignment
: 모든 셀에 적용될 기본 세로 정렬을 정의합니다. TableCellVerticalAlignment
를 사용합니다.textDirection
: 텍스트의 방향을 정의합니다.textBaseline
: 텍스트의 기준선을 설정하여 수직 정렬을 제어합니다.아래 예제는 테두리가 있는 테이블을 만들고, 다양한 열 너비와 세로 셀 정렬을 사용하는 방법을 보여줍니다.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Table Example'),
),
body: Center(
child: Table(
border: TableBorder.all(),
columnWidths: {
0: FixedColumnWidth(100.0),
1: FlexColumnWidth(),
2: FractionColumnWidth(0.3),
},
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
children: [
TableRow(children: [
Container(
padding: EdgeInsets.all(8.0),
color: Colors.grey,
child: Text('Fixed Width'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.blue,
child: Text('Flex Width'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.red,
child: Text('Fraction Width'),
),
]),
TableRow(children: [
Container(
padding: EdgeInsets.all(8.0),
color: Colors.grey,
child: Text('Row 2, Col 1'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.blue,
child: Text('Row 2, Col 2'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.red,
child: Text('Row 2, Col 3'),
),
]),
TableRow(children: [
Container(
padding: EdgeInsets.all(8.0),
color: Colors.grey,
child: Text('Row 3, Col 1'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.blue,
child: Text('Row 3, Col 2'),
),
Container(
padding: EdgeInsets.all(8.0),
color: Colors.red,
child: Text('Row 3, Col 3'),
),
]),
],
),
),
),
);
}
}
스크롤 가능 테이블: 테이블을 가로 스크롤이 가능한 SingleChildScrollView
로 감싸고 TableColumnWidth
를 FixedColumnWidth
로 설정하여 스크롤 가능한 테이블을 만들 수 있습니다.
적합한 위젯 선택:
Row
위젯을 사용하는 것이 더 적합합니다.SliverList
또는 Column
위젯을 사용하는 것이 더 적합합니다.행의 크기 조정:
열 너비 제어:
columnWidths
속성을 사용하여 각 열의 너비를 제어할 수 있습니다. 지정되지 않은 경우 defaultColumnWidth
가 사용됩니다.defaultColumnWidth
는 FlexColumnWidth
입니다. 이는 가로 축에서 남은 공간을 나눠 열 너비를 결정합니다.SingleChildScrollView
로 감싸야 한다면 FixedColumnWidth
와 같은 다른 TableColumnWidth
를 선택하는 것이 좋습니다.테이블 레이아웃 알고리즘:
RenderTable
을 참조하세요.자식 정렬 제어:
TableCell
을 사용합니다. TableCell
을 통해 셀 내의 콘텐츠 정렬을 세부적으로 제어할 수 있습니다.