Flutter - #4 Stack

손세은·2023년 9월 7일

Stack

1.
Stack은 플러터(Flutter)에서 위젯을 겹치게 배치하는 데 사용되는 위젯입니다. Stack 안에 있는 위젯들은 서로 겹치거나 정렬할 수 있으며, 일반적으로 배경 이미지와 그 위에 오버레이되는 위젯을 구성할 때 자주 활용됩니다. Stack은 자식 위젯을 중첩하여 사용하며, 아래의 속성을 통해 정렬과 크기를 조절할 수 있습니다

2. 주요 속성과 예시 코드

1) alignment: Stack 안에 있는 자식 위젯들의 정렬 방식을 설정합니다. 예를 들어, Alignment.center로 설정하면 자식 위젯들이 중앙에 정렬됩니다.

Stack(
  alignment: Alignment.center,
  children: [
    // 자식 위젯들...
  ],
)

2) children: Stack에 중첩될 자식 위젯들을 리스트로 포함합니다. 이 자식 위젯들은 Z 순서에 따라 겹쳐집니다. 가장 마지막에 추가된 위젯이 가장 위에 표시됩니다.

Stack(
  children: [
    Image.asset('assets/background.jpg'), // 배경 이미지
    Text('안녕하세요!', style: TextStyle(fontSize: 24.0)),
    // 추가적인 자식 위젯들...
  ],
)

3) fit: Stack 안에 있는 자식 위젯들이 어떻게 확장 또는 축소되는지 설정합니다. 기본값은 StackFit.loose로, 자식 위젯의 크기에 따라 Stack의 크기가 조절됩니다.

Stack(
  fit: StackFit.expand, // Stack 크기를 확장하여 모든 자식을 포함
  children: [
    // 자식 위젯들...
  ],
)

4) overflow: Stack 안에 있는 자식 위젯들이 Stack 바깥으로 넘치는 경우 어떻게 처리할지 설정합니다. 기본값은 Overflow.clip으로, 넘치는 부분을 자르고 숨깁니다.

Stack(
  overflow: Overflow.visible, // 넘치는 부분을 숨기지 않고 표시
  children: [
    // 자식 위젯들...
  ],
)

5) Example

        return Stack(
          children: [
            Image.asset(
              "${bannerItemImageUrl[index]}",
              fit: BoxFit.cover,
              width: MediaQuery.of(context).size.width,
            ),
            Align(
              alignment: Alignment.topRight,
              child: Container(
                color: Colors.black38,
                padding: EdgeInsets.all(4.0),
                margin: EdgeInsets.all(16.0),
                child: Text(
                  (index + 1).toString() +
                      "/" +
                      bannerItemImageUrl.length.toString(),
                ),
              ),
            ),
          ],
        );

3. Stack은 다양한 디자인 요소를 구성하는 데 유용하며, 겹치는 UI 요소나 특정 위치에 위젯을 배치할 때 활용할 수 있습니다. 위에서 제공한 예시 코드를 참고하여 Stack 위젯을 사용해보세요.

profile
힙스터 개발자가 될래요

0개의 댓글