반응형
Flutter의 build 함수란?
Flutter에서 UI를 만드는 핵심 메서드 중 하나가 바로 build 함수입니다. 앱 화면에 표시되는 모든 것은 이 build 함수에서 정의됩니다. 쉽게 말해, build 함수는 화면에 어떤 위젯을 보여줄지 "그리는 설계도"라고 할 수 있습니다.
build 함수의 역할
- 위젯 트리를 구성:
- build 함수는 Flutter에게 어떤 위젯을 화면에 보여줄지 알려줍니다.
- 이 함수 안에서 다양한 위젯을 조합해 "위젯 트리(widget tree)"를 만듭니다.
- UI 업데이트 처리:
- 앱의 상태(state)가 바뀌면, Flutter는 build 함수를 다시 호출해 변경된 UI를 업데이트합니다.
build 함수의 기본 구조
build 함수는 반드시 구현해야 하는 함수로, 모든 Flutter 위젯에서 사용됩니다. 아래는 build 함수의 기본 구조입니다.
@override
Widget build(BuildContext context) {
return WidgetTree;
}
- context: 현재 위젯의 위치와 관련된 정보를 담고 있습니다.
- 반환 값: 다른 위젯(또는 위젯 트리)을 반환합니다.
간단한 예제: build 함수에서 텍스트 표시
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('Build 함수 예제')),
body: Center(
child: Text('안녕하세요! Flutter를 배우고 있어요!'),
),
),
);
}
}
StatefulWidget과 build 함수
StatefulWidget에서는 상태가 변경될 때마다 build 함수가 호출되어 UI를 다시 그립니다.
상태에 따라 버튼을 누르면 카운터가 증가하는 예제
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int counter = 0;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('카운터 앱')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('버튼을 누른 횟수: $counter', style: TextStyle(fontSize: 24)),
ElevatedButton(
onPressed: () {
setState(() {
counter++;
});
},
child: Text('숫자 증가'),
),
],
),
),
),
);
}
}
build 함수의 중요한 특징
- 반복 호출:
- build 함수는 앱 상태가 변경될 때마다 반복적으로 호출됩니다.
- 하지만 Flutter는 효율적으로 변경된 부분만 업데이트하므로 걱정하지 않아도 됩니다.
- 항상 위젯 반환:
- build 함수는 항상 위젯 또는 위젯 트리를 반환해야 합니다.
- UI 선언:
- build 함수는 "어떤 UI를 보여줄지"만 선언하며, 렌더링이나 UI 업데이트는 Flutter가 자동으로 처리합니다.
반응형
'Flutter' 카테고리의 다른 글
다트 이해하기 - (8) Flutter의 initState 함수 (0) | 2024.12.01 |
---|---|
다트 이해하기 - (7) Flutter의 createState 함수 (0) | 2024.12.01 |
다트 이해하기 - (5) Flutter의 createElement 함수 (0) | 2024.12.01 |
다트 이해하기 - (4) Constructor(생성자) (0) | 2024.12.01 |
다트 이해하기 - (3) 위젯이란? (0) | 2024.12.01 |