Kong Eunho

2.1 위젯의 개념과 종류

2025년 09월 09일 10시
카테고리 - TIL, flutter, 2_Flutter_기초


2.1.1 위젯

위젯(Widget) : Flutter에서 UI를 구성하는 모든 요소의 가장 기본적인 단위. 각각의 역할을 가진 위젯을 중첩하고 결합하여 원하는 UI를 만들 수 있다.

① StatelessWidget : 상태가 없는 위젯.

로고, 제목 등 정적인 UI를 만들 때 사용한다. 위젯의 속성이 변하지 않는다. 위젯이 생성될 때 build() 메서드가 호출되어 UI를 그리며, 다시 그려지지 않는다.

import 'package:flutter/material.dart';

// StatelessWidget의 예시
class MyStatelessWidget extends StatelessWidget {
  final String title; // title은 변하지 않는 값.

  const MyStatelessWidget({Key? key, required this.title}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text(
      title, // title의 값이 고정되어 있습니다.
      style: const TextStyle(fontSize: 24),
    );
  }
}

② StatefulWidget : 상태가 있는 위젯.

카운터, 체크박스 등 동적인 UI를 만들 때 사용한다. 위젯의 상태가 변경되면 다시 그린다. StatefulWidget은 위젯 자체를 정의하며, State로 위젯의 가변적인 상태를 관리한다. setState() 메서드를 통해 위젯을 다시 빌드한다.

import 'package:flutter/material.dart';

// StatefulWidget의 예시
class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key? key}) : super(key: key);

  @override
  State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  int count = 0; // count는 변할 수 있는 상태.

  void incrementCounter() {
    setState(() { // setState()를 호출하여 화면을 다시 그리도록 요청합니다.
      count++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('카운트: $count'), // count 값이 변경될 때마다 화면이 업데이트됩니다.
        ElevatedButton(
          onPressed: incrementCounter,
          child: const Text('카운트 증가'),
        ),
      ],
    );
  }
}
◀ 이전 글 TIL, flutter, 1_Dart_기초
1.3 함수와 객체지향 프로그래밍
2025-09-07
목록으로 다음 글 ▶ LECTURE, 인공지능개론
인공지능 개요와 역사, 응용과 연구
2025-09-09