
Flutter 싱글톤에서 iOS 플러그인 인스턴스를 즉시 생성하면 크래시가 난다
iOS 네이티브 플러그인을 사용하는 Flutter 앱에서 싱글톤 패턴을 쓸 때 흔히 저지르는 실수가 있다. 플러그인 인스턴스를 클래스 필드에서 즉시 생성하는 것이다. 문제가 되는 패턴 class CloudSyncService { CloudSyncService._(); static final CloudSyncService instance = CloudSyncService._(); // ❌ 클래스 필드에서 즉시 생성 final _iCloudSync = IcloudStorageSync(); } static final instance = CloudSyncService._() 는 Dart에서 클래스가 처음 참조되는 시점에 실행된다. main.dart 상단에 import만 해도 static field initializer가 돌 수 있다. 이 시점은 WidgetsFlutterBinding.ensureInitialized() 이전일 수 있고, Flutter 엔진의 플러그인 채널 등록이 완료되기 전이다. 이 상태에서 IcloudStorageSync() 같은 네이티브 플러그인 인스턴스를 생성하면 플랫폼 채널을 찾지 못해 크래시가 발생한다. ...