Container 위젯
Container 위젯은 일반적인 그리기, 위치 지정, 크기 조정 위젯을 결합한 편리한 위젯입니다. 자식에 패딩, 마진, 테두리, 배경색 또는 장식을 추가하는 데 사용할 수 있습니다.
속성
width
: number | string - 컨테이너의 너비height
: number | string - 컨테이너의 높이color
: string - 배경색 (기본값: “transparent”)padding
: EdgeInsets - 내부 여백 (기본값: EdgeInsets.all(0))EdgeInsets.all(10) EdgeInsets.symmetric({ horizontal: 16, vertical: 8 }) EdgeInsets.only({ left: 8, top: 16, right: 8, bottom: 16 })
margin
: EdgeInsets - 외부 여백 (기본값: EdgeInsets.all(0))alignment
: Alignment - 자식 위젯을 정렬하는 방법Alignment.center Alignment.topLeft Alignment.bottomRight
decoration
: BoxDecoration - 고급 스타일링new BoxDecoration({ color: "white", borderRadius: BorderRadius.all(Radius.circular(8)) })
child
: Widget - 포함할 위젯clipped
: boolean - 자식을 컨테이너의 경계로 잘라낼지 여부transform
: Matrix4 - 컨테이너에 적용할 변환
일반적인 사용 사례
-
기본 Container:
Container({ width: 100, height: 100, color: "lightblue" })
-
텍스트가 있는 Container:
Container({ color: "lightblue", child: Text("안녕하세요", { style: new TextStyle({ fontSize: 30 }) }) })
-
패딩이 있는 Container:
Container({ color: "lightblue", padding: EdgeInsets.all(10), child: Container({ color: "green", child: Text("패딩이 있는 콘텐츠") }) })
모범 사례
-
레이아웃 가이드라인:
- 필요한 경우에만 width/height 사용
- 여백에는 EdgeInsets 선호
- 자식 위치 지정에는 alignment 사용
- 오버플로우 제어에는 clipped 고려
-
스타일링 가이드라인:
- 단순한 배경에는 color 사용
- 복잡한 스타일링에는 BoxDecoration 사용
- 장식을 일관되게 유지
- 재사용 가능한 스타일 고려
-
성능 팁:
- EdgeInsets 객체 캐싱
- const 생성자 사용
- 불필요한 중첩 피하기
- 레이아웃 제약 조건 고려
일반적인 패턴
-
둥근 모서리 Container:
Container({ width: 300, height: 300, clipped: true, decoration: new BoxDecoration({ borderRadius: BorderRadius.all(Radius.circular(20)), color: "lightblue" }) })
-
가운데 정렬된 콘텐츠:
Container({ color: "lightblue", padding: EdgeInsets.all(10), alignment: Alignment.center, child: Text("가운데") })
-
변환된 Container:
Container({ width: 300, height: 300, color: "lightblue", transform: Matrix4.translationValues(10, 10, 0) })
팁과 요령
-
여백 팁:
- 동일한 여백에는 EdgeInsets.symmetric 사용
- 외부 여백에는 margin 고려
- 내부 여백에는 padding 사용
-
장식 팁:
- borderRadius와 함께 clipped 사용
- 장식을 단순하게 유지
- 재사용 가능한 스타일 고려
-
레이아웃 팁:
- 위치 지정에는 alignment 사용
- 효과에는 transform 고려
- 중첩을 최소화