Problem : Using Firebase Authentication 사용 시도 중 Error 발생
No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() in Flutter and Firebase
위와 같은 에러가 떴다.
해당 앱 로직이
앱 시작 -> Material App 에서 현재 Authenticated된 User 상태 기반으로 '로그인 화면 / User의 기본 데이터 표시 화면' 2개 화면 중 로그인 되어 있을 때 'User의 기본 데이터 표시 화면'을 로딩 시켜 주려 했다.
[문제 코딩]
void main() {
Firebase.initializeApp();
runApp(MyApp());
}
여기서 Firebase.initializeApp()은 Document에서는 Firebase Auth를 사용하기 위한 초기화라고 이해하면 된단다.(하단 참고 url에 적혀 있음)
main에서 initialize해준 뒤 MyApp에서 Firebase Auth 가져와서 authenticated인지 확인 하려고 했더니, 에러가 난다.
(NoSuchMethodError was thrown building ... The getter ... was called on null)과 같은 에러가 난다.
문제는 Firebase.initializeApp 함수가 Future<FirebaseApp>를 비동기로 반환한다는 것.
에러가 initializeApp을 해주어야 하는데 이게 비동기니까 await도 같이 해줘 라고 떴으면 빨리 해결 할 수 있었을까..
해결 방법이 여러개 있는데(참고 : stackoverflow.com/questions/63492211/no-firebase-app-default-has-been-created-call-firebase-initializeapp-in)
처음에는 FutureBuilder로 해결 하려다가 FutureBuilder쓰면 코드에서 snapshot 상태 if문으로 확인해주어야 하는 코드가 지져분해 보이는 것 같아,
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
main을 이렇게 써주었더니 깔끔하게 해결.
ensureInitialized() 함수 : runApp 전에 바인딩이 초기화 되어야 할 때 선언 필요 (api.flutter.dev/flutter/widgets/WidgetsFlutterBinding/ensureInitialized.html)
flutter doc's Firebase initializing 코딩 :
(firebase.flutter.dev/docs/overview/#initializing-flutterfire)
'Flutter' 카테고리의 다른 글
[세팅방법]비쥬얼스튜디오코드 flutter ios emulator 연동 (1) | 2023.11.20 |
---|---|
[세팅방법] 플러터 설치 visual studio에서 flutter 연동 (1) | 2023.11.20 |