반응형
결론부터 말하면, StatelessWidget에서는 initState를 사용할 수 없다.
StatelessWidget의 생명주기에는 initState가 존재하지 않는다.
하지만 그와 비슷한 역할을 하게 메소드를 정의하면 된다. 사실 이건 너무 당연한 방식이다
다만, 'initState'라는 단어의 의미 때문에 의외로 순간 생각하지 못할 수 있다. (내가 그랬다...)
굳이 어렵게 소스 코드를 짜지 말고 메소드를 평소와 같이 정의하고 직접 호출하자.
초기화 작업을 수행할 메서드 정의
initState와 같은 역할을 하도록 초기화 작업을 메서드를 정의해준다.
메서드 이름은 꼭 init이 아니여도 되고, 사용자가 임의로 지정하면 된다.
void init() {
// 초기화 작업 수행
}
메서드 직접 호출
위젯이 빌드 될 때, 정의한 메서드를 직접 호출한다.
@override
Widget build(BuildContext context) {
// init 메서드를 호출하여 초기화 작업 수행
init();
return const Placeholder();
}
전체 코드
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
void init() {
// 초기화 작업 수행
}
@override
Widget build(BuildContext context) {
// init 메서드를 호출하여 초기화 작업 수행
init();
return const Placeholder();
}
}
반응형