본문 바로가기

카테고리 없음

stack wedget

Stack 위젯은 Flutter에서 자식 위젯들을 서로 겹치게 배치하는 데 사용됩니다. Stack를 사용하면 하나의 위젯 위에 다른 위젯을 쌓는 방식으로 레이아웃을 구성할 수 있습니다. 자식 위젯들을 기본적으로 겹쳐지며, 이때 자식 위젯의 배치순서와 위치를 지정하는 방법도 제공합니다.

 

 

stack wedget

 

1. Stack 위젯의 주요 특징

  • 자식 위젯 겹치기: 여러 자식 위젯을 겹쳐서 배치할 수 있습니다. 예를 들어, 이미지 위에 텍스트를 올리거나, 특정 배경 위에 여러 UI 요소를 겹쳐서 표현할 수 있습니다.
  • 정렬 및 위치 지정: Stack 내에서 각 자식 위젯은 Positioned 위젯을 사용해 위치를 지정할 수 있습니다. 이를 통해 자식 위젯들을 Stack 내에서 원하는 위치에 배치할 수 있습니다.
  • 맞춤 레이아웃: alignment 속성을 통해 모든 자식 위젯의 기본 정렬을 설정할 수 있습니다.

 

2. Stack 위젯의 주요 속성

2-1 alignment

alignment 속성은 Stack 내의 자식 위젯들이 기본적으로 어디에 위치할지를 결정합니다. 객체를 사용하여 위치를 지정할 수 있습니다. 기본값은 Alignment.topleft로 자식 위젯들이 상단좌측에 배치됩니다.

Stack(
  alignment: Alignment.center,
  children: [
    Text("Centered Text"),
  ],
)

Taxt 위젯이 중앙에 위치합니다.

  • Alignment.topLeft: 좌상단 (기본값)
  • Alignment.topRight: 우상단
  • Alignment.bottomLeft: 좌하단
  • Alignment.bottomRight: 우하단
  • Alignment.center: 중앙

 

2-2 fit

fit 속성은 Stack의 자식 위젯들이 부모의 크기에 맞춰 확장되거나 자식의 본래 크기를 유지할지를 결정합니다. 이 속성에는 StackFit 열거형 값을 사용합니다.

  • StackFit.loose: 자식 위젯들이 자신이 원하는 크기로 배치됩니다. 기본값입니다.
  • StackFit.expand: 자식 위젯들이 Stack의 크기에 맞게 확장됩니다.
  • StackFit.passthrough: 자식 위젯들이 부모의 제약조건을 그대로 전달받습니다.
Stack(
  fit: StackFit.expand,
  children: [
    Container(color: Colors.blue),
    Text("Expanded Text"),
  ],
)

이 예시에서는 Container와 Text 모두 Stack의 크기에 맞게 확장됩니다.

 

 

 

2-3 clipBehavior

clipBehavior 속성은 Stack의 자식 위젯이 Stack의 경계를 벗어날 때 어떻게 처리할지를 결정합니다. 이 속성은 Clip 열거형 값을 사용합니다.

  • Clip.none: 자식 위젯이 경계를 벗어나도 자르지 않습니다.
  • Clip.hardEdge: 자식 위젯이 경계를 벗어나면 잘라냅니다.
  • Clip.antiAlias: 자식 위젯이 경계를 벗어나면 안티 앨리어싱을 적용하여 잘라냅니다.
  • Clip.antiAliasWithSaveLayer: 안티 앨리어싱을 적용하고, 필요한 경우 레이어를 사용하여 잘라냅니다.
Stack(
  clipBehavior: Clip.hardEdge,
  children: [
    Positioned(
      left: -20,
      top: -20,
      child: Container(
        width: 100,
        height: 100,
        color: Colors.red,
      ),
    ),
  ],
)

이 예시에서는 Container가 Stack의 경계를 벗어나려고 할 때, Clip.hardEdge 속성 덕분에 잘려나갑니다. 

그래서 width 80, height 80 이 보여지게 됩니다.

 

 

2-4 textDirection

textDirection 속성은 Alignment 객체를 해석할 때의 텍스트 방향을 결정합니다. 이는 AlignmentDirectional을 사용하거나 위젯의 배치 순서를 지정할 때 유용합니다.

  • TextDirection.ltr: 왼쪽에서 오른쪽으로 텍스트가 배치됩니다. (Left-to-Right)
  • TextDirection.rtl: 오른쪽에서 왼쪽으로 텍스트가 배치됩니다. (Right-to-Left)

 

 

2-5 children

children 속성은 Stack 내에서 겹쳐서 배치할 위젯들의 리스트를 정의합니다. 위젯들은 리스트의 순서대로 쌓입니다.

Stack(
  children: [
    Container(color: Colors.red, width: 100, height: 100),
    Container(color: Colors.green, width: 80, height: 80),
    Container(color: Colors.blue, width: 60, height: 60),
  ],
)

이 예시에서는 빨간색 컨테이너가 가장 아래, 초록색이 그 위, 파란색이 가장 위에 위치하게 됩니다.