함께 공부하는 Flutter

[Flutter] 알아두면 정말 유용한 addPostFrameCallback

냥냥박사에디 2024. 1. 4. 18:26
반응형

Flutter를 개발하다보면 initState 에서 값을 초기화할 수 없는 것들이 있습니다.
그럴 때 정말 유용한 콜백 함수 입니다.

addPostFrameCallback은 Flutter에서 제공하는 메서드로, 위젯이 화면에 그려진 후에 콜백 함수를 실행하고자 할 때 사용됩니다. 이 메서드는 다음 프레임이 그려진 후에 실행되므로 화면 레이아웃이 확정된 상태에서 작업을 수행할 수 있습니다.

addPostFrameCallback을 사용하면 초기 빌드(initial build) 단계에서 화면에 그려진 후에 추가적인 작업을 수행할 수 있습니다. 예를 들어, 위젯이 화면에 표시된 후에 애니메이션을 시작하거나, 화면에 그려진 후에 초기 데이터를 로드하는 등의 작업에 사용할 수 있습니다.

이 메서드는 WidgetsBinding 클래스의 인스턴스를 통해 사용되며, 다음과 같이 호출됩니다:

WidgetsBinding.instance!.addPostFrameCallback((_) {
  // 화면이 그려진 후에 실행되는 콜백 함수
  // 여기서 원하는 작업을 수행할 수 있습니다.
});

위 코드에서 _는 무시되는 매개변수입니다. addPostFrameCallback은 화면이 그려진 후에 실행되어야 하는 함수를 인자로 받습니다.

이 메서드는 대부분의 경우에 initState 메서드 내에서 호출됩니다. initState에서 호출하면 해당 위젯이 최초로 생성될 때 한 번만 실행되며, 화면이 리로드되어도 다시 호출되지 않습니다. 그렇기 때문에 초기 빌드 이후에 실행되어야 하는 코드를 안전하게 작성할 수 있습니다.

예시로, 다음과 같이 사용할 수 있습니다:

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  void initState() {
    super.initState();

    WidgetsBinding.instance!.addPostFrameCallback((_) {
      // 화면이 그려진 후에 실행되는 콜백 함수
      print("The widget has been rendered on screen!");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      // Widget의 내용
    );
  }
}

이렇게 하면 위젯이 화면에 그려진 후에 콜백 함수가 실행됩니다.

반응형