Быстрая первоначальная проверка - вам нужно await initUser()
. Итак:
Future testFirebase() async {
await initUser();
//Initialize Firebase
final FirebaseApp firebaseApp = await FirebaseApp.configure( ... );
Без этого я бы ожидал, что вызовы к базе данных начнутся до того, как завершится аутентификация.
Обновление : я только что подтвердил, что это действительно так с этим простым кодом:
void _signin() async {
print("Calling __actuallySignin");
__actuallySignin();
print("called __actuallySignin and waited");
}
void __actuallySignin() async {
print("Calling signIn...");
await FirebaseAuth.instance.signInAnonymously();
print("called signIn... and waited");
}
Это печатает:
flutter: Calling __actuallySignin
flutter: called __actuallySignin and waited
flutter: Calling signIn...
...
flutter: called signIn... and waited
Таким образом, метод __actuallySignin
выполняется до входа в систему. Чтобы заставить вызывающий код ждать результата, вы добавляете await
:
await __actuallySignin();
Какие выходы:
flutter: Calling __actuallySignin
flutter: Calling signIn...
flutter: called signIn... and waited
flutter: called __actuallySignin and waited