본문 바로가기
Flutter

플러터에서 위젯 트리란 무엇인가요?

by Maccrey Coding 2024. 7. 31.
반응형

 

플러터(Flutter)는 UI를 구성할 때 위젯(widget)이라는 기본 단위를 사용합니다.

위젯은 사용자 인터페이스의 모든 요소를 나타내며, 이러한 위젯들이 트리 구조로 구성된 것을 위젯 트리(widget tree)라고 합니다.

위젯 트리는 플러터 애플리케이션의 시각적 구조와 계층을 정의합니다.

왜 위젯 트리를 사용할까요?

  1. 구조적 구성: 위젯 트리를 사용하면 애플리케이션의 UI를 구조적으로 구성할 수 있습니다. 위젯은 부모-자식 관계로 연결되며, 이를 통해 복잡한 UI를 체계적으로 관리할 수 있습니다.
  2. 재사용성: 위젯을 재사용하여 코드 중복을 줄이고, 유지보수를 쉽게 할 수 있습니다.
  3. 동적 UI 구성: 위젯 트리를 동적으로 변경하여 사용자의 입력이나 상태 변화에 따라 UI를 업데이트할 수 있습니다.

위젯 트리 사용법

플러터에서 위젯 트리를 사용하는 방법을 단계별로 설명하겠습니다.

1. 기본 위젯 트리 예제

먼저, 간단한 위젯 트리를 만들어보겠습니다.

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('My First Flutter App'),
        ),
        body: Center(
          child: Text('Hello, Flutter!'),
        ),
      ),
    );
  }
}

예제 설명

  1. MyApp 클래스: StatelessWidget을 상속받아 기본 애플리케이션 구조를 정의합니다.
  2. MaterialApp 위젯: 플러터 앱의 루트 위젯으로, 앱의 기본 테마와 라우팅을 설정합니다.
  3. Scaffold 위젯: 앱의 기본 레이아웃 구조를 제공합니다. 앱 바(app bar), 본문(body) 등을 포함합니다.
  4. AppBar 위젯: 앱의 상단 바를 구성합니다.
  5. Center 위젯: 자식 위젯을 중앙에 배치합니다.
  6. Text 위젯: 화면에 텍스트를 표시합니다.

2. 위젯 트리 확장하기

위젯 트리를 확장하여 더 복잡한 UI를 만들어보겠습니다.

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('My Flutter App'),
        ),
        body: Column(
          children: <Widget>[
            Text(
              'Hello, Flutter!',
              style: TextStyle(fontSize: 24),
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Icon(Icons.favorite, color: Colors.red),
                SizedBox(width: 10),
                Text('I love Flutter'),
              ],
            ),
            Expanded(
              child: Container(
                color: Colors.blue,
                child: Center(
                  child: Text(
                    'This is an expanded widget',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

예제 설명

  1. Column 위젯: 수직으로 자식 위젯을 배치합니다.
  2. Row 위젯: 수평으로 자식 위젯을 배치합니다. mainAxisAlignment 속성을 사용하여 자식 위젯을 중앙에 배치합니다.
  3. Icon 위젯: 화면에 아이콘을 표시합니다.
  4. SizedBox 위젯: 고정된 크기의 빈 공간을 만듭니다.
  5. Expanded 위젯: 남은 공간을 차지하도록 자식 위젯을 확장합니다.
  6. Container 위젯: 레이아웃을 위한 다양한 속성을 제공하는 위젯입니다.

결론

플러터에서 위젯 트리는 UI를 구성하는 핵심 요소입니다.

위젯 트리를 사용하면 애플리케이션의 구조를 체계적으로 구성하고, 재사용 가능한 컴포넌트를 만들며, 동적으로 UI를 업데이트할 수 있습니다.

위젯 트리를 이해하고 활용하는 것은 플러터 애플리케이션 개발의 기본이자 핵심입니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

반응형