Flutter - StatelessWidget에서의 InitState (시작 시 초기화 작업 수행하기)

반응형

 

결론부터 말하면, 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();
  }
}

 

반응형