반응형
클래스가 있고, 그중에는 StatefulWidget이 있고, StatelessWidget이 있고
StatefulWidget은 상태 관리를 위해 State<클래스명>을 상속받은 상태를 관리하는 클래스가 따로 필요하고, 여기서 상태 관리 및 해당 상태를 가지고 build를 통해 화면을 그린다
StatelessWidget은 상태가 필요없기 때문에 State<클래스명>를 상속받을 필요없는 클래스에서 build를 통해 화면을 그린다
그리고 이 화면을 그리는 클래스를 생성하기 위해 클래스에서 createState()를 오버라이드해준다
// 1. StatefulWidget의 경우
class MyStatefulWidget extends StatefulWidget {
// createState()를 통해 State 클래스 생성
@override
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
// 상태 관리를 위한 별도의 클래스
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
// 상태 변수들
int counter = 0;
String name = "";
// 상태를 변경하는 메서드들
void incrementCounter() {
setState(() { // 상태가 변경되면 build를 다시 호출
counter++;
});
}
// 화면 그리기
@override
Widget build(BuildContext context) {
return Text('카운터: $counter');
}
}
// 2. StatelessWidget의 경우
class MyStatelessWidget extends StatelessWidget {
// 상태 변수가 없음
// State 클래스도 필요 없음
// createState()도 필요 없음
// 바로 화면 그리기
@override
Widget build(BuildContext context) {
return Text('안녕하세요');
}
}
반응형
'방구석 컴퓨터 > 플러터' 카테고리의 다른 글
library_private_types_in_public_api 에러 (0) | 2025.01.09 |
---|---|
SQLite 스키마 변경을 위한 버전 정보와 `onUpgrade` (0) | 2025.01.09 |