본문 바로가기
Flutter

[Flutter] 플러터 - WidgetsFlutterBinding.ensureInitialized()

by s_hoonee 2024. 2. 16.
반응형

WidgetsFlutterBinding.ensureInitialized()  사용시기 

Flutter 앱을 개발할 때 비동기 작업을 수행하고 그 결과를 기반으로 앱을 초기화해야 할 때 사용
1. 비동기 데이터 로딩 후 앱 초기화 : SharedPreferences나 Firebase와 같은 외부 소스에서 데이터를 비동기적으로 로드해야 할 때,

2. 플랫폼 채널과 통신: 네이티브 코드와 플러터 간 통신을 위해 플랫폼 채널을 설정해야 할 때,
(ex.  네이티브 코드에서 특정 기능을 호출하거나, 플러터 코드에서 네이티브 측으로 데이터를 전달)

위 2가지 경우 ensureInitialized()를 호출하여 초기화를 보장하고, 데이터 로딩이 완료된 후에 runApp() 메소드 실행하게 제어해줌!

-> main에서 async 사용할 때 필요하다고 생각하자!

void main() async {
  // Flutter 앱이 실행되기 전에 초기화를 보장
  WidgetsFlutterBinding.ensureInitialized();

  // 비동기적으로 데이터를 로드하고 그 후에 runApp()을 호출
  await loadDataFromSharedPreferences();

  runApp(MyApp());
}

// SharedPreferences를 사용하는 경우! 
Future<void> loadDataFromSharedPreferences() async {
  // SharedPreferences에서 데이터를 로드하는 비동기 작업을 수행합니다.
  // 예시: await SharedPreferences.getInstance();
}