Stack Widget

Date:     Updated:

카테고리:

태그:

Flutter의 Stack 위젯은 여러 개의 위젯을 겹쳐서 배치할 수 있는 레이아웃 위젯입니다. 이 위젯은 자식 위젯들이 서로 겹칠 수 있도록 허용하며, 자식 위젯들은 위젯의 순서에 따라 쌓이게 됩니다. Stack은 다양한 UI 요소를 디자인할 때 매우 유용하며, 특히 커스텀 레이아웃을 만들 때 자주 사용됩니다.

Stack의 기본 사용법

Stack 위젯은 자식 위젯을 추가하기 위해 children 프로퍼티를 사용합니다. 자식 위젯들은 Positioned 위젯과 함께 사용하여 위치를 조정할 수 있습니다.

기본 구조

Stack(
  children: [
    // 첫 번째 자식
    Container(
      width: 200,
      height: 200,
      color: Colors.blue,
    ),
    // 두 번째 자식
    Positioned(
      top: 50,
      left: 50,
      child: Container(
        width: 100,
        height: 100,
        color: Colors.red,
      ),
    ),
  ],
)

주요 프로퍼티

  • children: Stack 안에 쌓일 위젯 목록입니다.
  • alignment: 자식 위젯을 배치할 기본 정렬 방식을 설정합니다.
  • fit: 자식 위젯이 Stack의 크기에 어떻게 맞춰질지를 설정합니다. 주로 StackFit.loose, StackFit.expand, StackFit.passthrough 중 하나를 사용합니다.

Stack의 사용 예시

다음은 Stack을 사용하여 이미지 위에 텍스트를 오버레이하는 간단한 예제입니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Stack 예제'),
        ),
        body: Center(
          child: Stack(
            alignment: Alignment.center,
            children: [
              Container(
                width: 300,
                height: 300,
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: NetworkImage('https://via.placeholder.com/300'),
                    fit: BoxFit.cover,
                  ),
                ),
              ),
              Container(
                padding: EdgeInsets.all(10),
                color: Colors.black54,
                child: Text(
                  '오버레이 텍스트',
                  style: TextStyle(color: Colors.white, fontSize: 24),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

예제 설명

  1. Stack: Stack 위젯을 사용하여 자식 위젯을 겹쳐 놓습니다.
  2. 배경 이미지: 첫 번째 자식으로 배경 이미지를 포함한 컨테이너를 추가합니다.
  3. 오버레이 텍스트: 두 번째 자식으로 반투명한 배경을 가진 텍스트 컨테이너를 추가하여 이미지 위에 텍스트를 표시합니다.

Stack의 장점

  • 유연성: 여러 개의 위젯을 겹쳐서 복잡한 UI를 쉽게 만들 수 있습니다.
  • 직관적인 레이아웃: 자식 위젯들의 순서만으로 쉽게 시각적 표현을 조정할 수 있습니다.

주의 사항

  • Stack을 사용할 때 자식 위젯의 크기를 잘 관리해야 합니다. 서로 겹치는 경우 UI가 복잡해질 수 있습니다.
  • 과도하게 사용하면 레이아웃이 복잡해질 수 있으므로 적절히 사용하는 것이 중요합니다.

이러한 방식으로 Stack 위젯을 활용하면 다양한 사용자 인터페이스를 구성할 수 있으며, Flutter의 유연성을 더욱 극대화할 수 있습니다. 블로그 포스트에서 Stack의 다양한 활용 예제를 통해 독자들에게 유용한 정보를 제공할 수 있을 것입니다.

Widget 카테고리 내 다른 글 보러가기

댓글 남기기