패딩과 마진 이해하기
Flitter에서 패딩과 마진은 위젯 주변의 간격을 제어하는 데 필수적인 속성입니다. 비슷해 보일 수 있지만 서로 다른 목적으로 사용됩니다:
- 패딩: 위젯의 콘텐츠와 테두리 사이의 공간
- 마진: 위젯의 테두리와 주변 위젯 사이의 공간
EdgeInsets 클래스
패딩과 마진 모두 EdgeInsets
클래스를 사용하며, 이 클래스는 여러 편리한 생성자를 제공합니다:
EdgeInsets.all(value)
: 모든 면에 동일한 간격EdgeInsets.symmetric({ vertical, horizontal })
: 수직과 수평 면에 서로 다른 간격EdgeInsets.only({ left, top, right, bottom })
: 각 면을 개별적으로 제어
핵심 개념
-
패딩 사용법:
Container({ padding: EdgeInsets.all(20), child: Text("패딩이 있는 텍스트"), });
-
마진 사용법:
Container({ margin: EdgeInsets.symmetric({ vertical: 10, horizontal: 20, }), child: Text("마진이 있는 텍스트"), });
-
둘 다 사용하기:
Container({ padding: EdgeInsets.all(16), margin: EdgeInsets.all(8), child: Text("패딩과 마진이 모두 있는 텍스트"), });
모범 사례
-
일관된 간격:
- 앱 전체에서 일관된 패딩/마진 값 사용
- 재사용성을 위한 간격 상수 생성 고려
-
반응형 디자인:
- 적절한 경우 상대적 값 사용
- 다양한 화면 크기에서 간격이 레이아웃에 미치는 영향 고려
-
레이아웃 계층:
- 위젯 내부 간격에는 패딩 사용
- 형제 위젯 간의 간격에는 마진 사용
-
성능:
- 다른 패딩 위젯으로 감싸는 대신 컨테이너 자체에 마진 사용 선호
- 여러 컨테이너를 중첩하는 대신 가능한 경우 패딩/마진 결합
일반적인 실수
-
중첩된 패딩:
- 불필요한 패딩 컨테이너 중첩 피하기
- 가능한 경우 패딩 값 결합하기
-
마진 상쇄:
- CSS와 달리 Flitter에서는 마진이 상쇄되지 않음
- 인접한 마진은 더해짐
-
오버플로우:
- 반응형 레이아웃에서 고정 패딩/마진 값 사용 시 주의
- 제약 조건이나 유연한 위젯 사용 고려