<aside> ❓ 1. 플러터로 프로젝트 생성시 main.dart에는 플러터에서 제공하는 아주 기본적인 소스코드가 있습니다. 생성되는 소스코드를 직접 실행해보고, 어떤 동작원리를 가지고 있는지, 그리고 Stateful이 사용되어야 하는 이유를 정리하세요.

</aside>

동작 원리

  1. main() 함수 → runApp()으로 앱을 실행한다.
  2. MyApp() 클래스에서는 MaterialApp 위젯을 반환한다.
    1. MaterialApp 위젯의 홈 화면은 MyHomePage 클래스로 설정
  3. MyHomePage 클래스는 _MyHomePageState클래스로 상태를 관리한다.
  4. 하단 floatingActionButton을 누를 때마다 _incrementCounter() 함수가 호출되고, _incrementCounter() 함수 내부에서 _counter 변수의 값을 증가시킨 후에 setState() 함수를 호출하여 상태를 업데이트한다.
  5. build() 에서는 Scaffold 위젯을 반환하며, appBar, body, floatingActionButton 등을 구성하여 화면을 보여준다.

Stateful이 사용되어야 하는 이유


<aside> ❓ 2. Stateful 위젯의 라이프사이클을 공부하고, initState함수가 무엇인지, 언제 작동되는지 소스코드로 직접 테스트해보세요. 그리고 버튼의 이벤트를 통해 setState((){}); 실행했을 때, 왜 initState 함수는 실행이 안되는지 정리하세요.

Stateful 위젯의 라이프사이클

Untitled

  1. createState() : StatefulWidget 인스턴스가 만들어질 때 한 번만 호출되며, 해당 위젯에 상응하는 State 객체를 생성한다.
  2. initState() : State 객체가 생성된 후, Stateful 위젯의 초기화 작업을 수행한다. 이 메소드는 한 번만 호출되며, 다른 상태 변경 이벤트에 의해 다시 호출되지 않는다.
  3. didChangeDependencies() : 위젯이 의존하는 객체들의 상태가 변경될 때마다 호출된다. 이 메소드는 initState() 메소드 이후에 호출되며, 여러 번 호출될 수 있다.