패딩과 마진 이해하기

Flitter에서 패딩과 마진은 위젯 주변의 간격을 제어하는 데 필수적인 속성입니다. 비슷해 보일 수 있지만 서로 다른 목적으로 사용됩니다:

  • 패딩: 위젯의 콘텐츠와 테두리 사이의 공간
  • 마진: 위젯의 테두리와 주변 위젯 사이의 공간

EdgeInsets 클래스

패딩과 마진 모두 EdgeInsets 클래스를 사용하며, 이 클래스는 여러 편리한 생성자를 제공합니다:

  1. EdgeInsets.all(value): 모든 면에 동일한 간격
  2. EdgeInsets.symmetric({ vertical, horizontal }): 수직과 수평 면에 서로 다른 간격
  3. EdgeInsets.only({ left, top, right, bottom }): 각 면을 개별적으로 제어

핵심 개념

  1. 패딩 사용법:

    Container({
      padding: EdgeInsets.all(20),
      child: Text("패딩이 있는 텍스트"),
    });
    
  2. 마진 사용법:

    Container({
      margin: EdgeInsets.symmetric({
        vertical: 10,
        horizontal: 20,
      }),
      child: Text("마진이 있는 텍스트"),
    });
    
  3. 둘 다 사용하기:

    Container({
      padding: EdgeInsets.all(16),
      margin: EdgeInsets.all(8),
      child: Text("패딩과 마진이 모두 있는 텍스트"),
    });
    

모범 사례

  1. 일관된 간격:

    • 앱 전체에서 일관된 패딩/마진 값 사용
    • 재사용성을 위한 간격 상수 생성 고려
  2. 반응형 디자인:

    • 적절한 경우 상대적 값 사용
    • 다양한 화면 크기에서 간격이 레이아웃에 미치는 영향 고려
  3. 레이아웃 계층:

    • 위젯 내부 간격에는 패딩 사용
    • 형제 위젯 간의 간격에는 마진 사용
  4. 성능:

    • 다른 패딩 위젯으로 감싸는 대신 컨테이너 자체에 마진 사용 선호
    • 여러 컨테이너를 중첩하는 대신 가능한 경우 패딩/마진 결합

일반적인 실수

  1. 중첩된 패딩:

    • 불필요한 패딩 컨테이너 중첩 피하기
    • 가능한 경우 패딩 값 결합하기
  2. 마진 상쇄:

    • CSS와 달리 Flitter에서는 마진이 상쇄되지 않음
    • 인접한 마진은 더해짐
  3. 오버플로우:

    • 반응형 레이아웃에서 고정 패딩/마진 값 사용 시 주의
    • 제약 조건이나 유연한 위젯 사용 고려