```dart
// 부모 위젯
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
@override
void initState() {
super.initState(); // 부모 클래스의 initState() 호출
print('ParentWidget의 initState()가 호출되었습니다.');
}
@override
Widget build(BuildContext context) {
return ChildWidget();
}
}
// 자식 위젯
class ChildWidget extends StatefulWidget {
@override
_ChildWidgetState createState() => _ChildWidgetState();
}
class _ChildWidgetState extends State<ChildWidget> {
@override
void initState() {
super.initState(); // 부모 클래스의 initState() 호출
print('ChildWidget의 initState()가 호출되었습니다.');
}
@override
Widget build(BuildContext context) {
return Container();
}
}
// 실행 결과
ParentWidget의 initState()가 호출되었습니다.
ChildWidget의 initState()가 호출되었습니다.
```
위 코드에서 볼 수 있듯이, ParentWidget과 ChildWidget가 각각 StatefulWidget을 상속하고 있습니다. ParentWidget에서 initState()가 호출되면, 이어서 ChildWidget에서도 initState()가 호출됩니다. 이때 super.initState()를 통해 부모 클래스의 initState()가 먼저 실행된 후에 자식 클래스의 initState()가 실행됩니다.
initState() 메서드는 StatefulWidget의 라이프사이클 중 한 부분으로, 위젯의 초기화에 관련된 작업을 수행합니다. 이 메서드는 위젯이 생성되고 위젯 트리에 추가될 때 한 번 호출됩니다. initState() 메서드는 주로 다음과 같은 작업에 사용됩니다:
- 상태를 초기화하거나 설정합니다.
- 데이터를 가져오거나 로드합니다.
- 리소스를 할당하거나 초기화합니다.
- 애니메이션을 시작하거나 초기화합니다.
위와 같은 작업은 주로 initState() 메서드 내에서 수행됩니다. 이 메서드는 위젯의 라이프사이클 중 초기화 단계에서 호출되므로, 위젯의 상태를 초기화하고 애플리케이션의 초기 설정을 수행하는 데에 사용됩니다.
initState() 메서드는 주로 StatefulWidget 내의 상태를 초기화하고 관리하는 데 사용됩니다. StatefulWidget은 상태를 가질 수 있는 위젯이며, 이 상태는 해당 위젯의 프로퍼티를 관리하고 변경하는 데 사용됩니다.
initState() 메서드를 사용하여 위젯의 상태를 초기화하고 필요한 초기 설정을 수행할 수 있습니다. 이 메서드는 위젯이 처음 생성될 때 한 번 호출되며, 주로 다음과 같은 작업에 사용됩니다:
- 위젯의 프로퍼티를 초기화합니다.
- 상태를 관리하는 데 필요한 초기 데이터를 가져오거나 설정합니다.
- 위젯의 상태에 따라 UI를 초기화하거나 업데이트합니다.
따라서 initState() 메서드를 사용하여 StatefulWidget 내의 상태를 초기화하고 관리하는 것은 매우 일반적입니다. 위젯의 상태를 초기화하고 변경하는 데 사용되는 데이터 및 설정은 주로 이 메서드 내에서 처리됩니다.
네, 부모 위젯의 상태값이 변경되면 해당 상태를 사용하는 자식 위젯도 다시 빌드됩니다. 부모 위젯의 상태값이 변경되면 Flutter는 해당 상태를 사용하는 모든 자식 위젯에게 새로운 상태를 전달하고, 자식 위젯은 이를 통해 UI를 업데이트합니다. 이러한 프로세스는 Flutter의 리액티브 프레임워크인 "재빌드" 메커니즘에 의해 처리됩니다.
따라서 부모 위젯의 상태값이 변경되면 해당 상태를 사용하는 자식 위젯이 다시 빌드되고, 변경된 상태에 따라 UI가 업데이트됩니다. 이것이 Flutter의 리액티브 프레임워크가 제공하는 기능 중 하나이며, 상태 변화에 따라 UI가 자동으로 업데이트되는 장점을 가지고 있습니다.
'공부 > flutter' 카테고리의 다른 글
[flutter] 6.0 ~ 6.7 WEBTOON APP (0) | 2024.04.19 |
---|---|
[flutter]5.0~ pomodoro app (1) | 2024.04.18 |
[flutter] 4.0~4.4 stateful widgets (0) | 2024.04.17 |
[flutter]3.5~ (0) | 2024.04.17 |
[flutter] flutter challenge 과제 -1 (1) | 2024.04.12 |