ABOUT ME

Today
Yesterday
Total
  • [Flutter] WidgetsFlutterBinding.ensureInitialized(); 이란?
    IT 2025. 3. 12. 20:22

    일단 WidgetsFlutterBinding이 무엇일까?

     

    WidgetsFlutterBinding은 플러터 앱이 실행되기 전에 프레임워크를 초기화하는 메서드입니다.

    앱의 루트 위젯 생성, 리소스 로딩, 플러그인 초기화 등의 작업을 수행합니다. 

    이것은 일반적으로 main() 함수나 애플리케이션의 진입점에서 호출하여 사용합니다.

     

    그럼 이제 ensureInitialized()은 무엇일까?

    이것은 말 그대로 초기화된 상태를 보장한다는 의미입니다.

    앱의 바인딩이 초기화되었는 지를 확인하는데 사용됩니다.

     

    ensureInitialized의 종류는 크게 WidgetsFlutterBinding과 ServicesBinding 두 가지가 있습니다.

    앞서 말했든 WidgetsFlutterBinding은 기본적인 위젯 렌더링 및 이벤트 처리와 같은 UI 관련 작업을 처리하고,

    ServicesBinding은 네트쿼으, 플랫폼 채널, 플러그인, 시스템 메시지, 키보드, 클립 보드 등과 같은 Flutter 프레임 워크의 서비스에 대한 바인딩을 처리합니다.

     

    이것은 그런 어떠한 상황에서 사용할까요?

    1. 비동기 작업에서 플러터 프레임워크를 사용해야하는 경우:

    애플리케이션의 바인딩이 초기화되지 않은 상태에서 비동기 작업을 수행하면 예기치 않은 결과가 발생할 수 있습니다.

    ensureInitialized() 함수를 호출하여 바인딩이 초기화될 때까지 기다렸다가 비동기 작업을 수행하면 안전하게 사용할  수 있습니다.

     

    2. 일부 Flutter 플러그인이 필요한 경우:

    일부 플러그인은 플러터 바인딩이 초기화된 후에만 사용할 수 있습니다. 이러한 경우 플러그인을 사용하기 전에 함수를 호출하여 바인딩이 초기화되도록 해야합니다.

    예를 들어, google_maps_flutter 플러그인을 사용하는 경우 ensureInitialized() 함수를 호출하여 Google Maps API 키가 초기화되고 맵을 사용할 수 있도록 해야합니다.

     

     

     

    부가 설명.

    그럼 이제 여기서 바인딩이 뭐예요? 라고 질문할 수 있다.

     

    컴퓨팅에서 바인딩은 프로그래밍 언어가 해당 어넝에 네이티브하지 않은 외부 라이브러리나 운영 체제 서비스를 사용할 수 있는 글루 코드를 제공하는 API이다. 바인딩은 일반적으로 하나를 다른 것으로 매핑시키는 것을 의미합니다.

     

    그럼 여기서 또 글루 코드가 뭐죠? 라고 하면

    글루 코드란 Glue code로 서로 다른 언어를 접착시키는 코드를 의미합니다.

    예를 들어 C와 파이썬으로 쓰여진 두 개의 프로그램이 있는 데 두 개를 같이 쓰려면 C를 파이썬으로 바꾸거나 파이썬을 C로 바꿔야합니다.

    그런데 C는 파이썬보다 속도가 엄청 빠르고 파이썬은 간편합니다.

    즉, 각각의 장점을 살리기 위해서 두 개를 그냥 붙여쓸 수 있으면 좋은데 이렇게 두 언어를 붙여주는 걸 글루코라고 합니다.

    파이썬이 글루코드로써 유명합니다.

     

Designed by Tistory.