방구석 컴퓨터/플러터 / / 2025. 1. 8. 16:17

플러터 클래스의 StatefulWidget과 StatelessWidget

반응형

클래스가 있고, 그중에는 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('안녕하세요');
    }
}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유