Как вложенные операторы if и else работают во Flutter или dart? - PullRequest
0 голосов
/ 18 июня 2020
User _returnUserFromFirebase(FirebaseUser user) {
    if(user==null) {
      return null;
    } else {
      return User(id:user.uid);
    }

}


Future<User> signInWithGoogle() async{
    GoogleSignIn _signIn = GoogleSignIn();
    GoogleSignInAccount _account= await _signIn.signIn();
    if(_account!=null){
      GoogleSignInAuthentication _authentication = await _account.authentication;
      if(_authentication.idToken!=null && _authentication.accessToken!=null){
        final AuthCredential _credential = GoogleAuthProvider.getCredential(idToken:
        _authentication.idToken, accessToken: _authentication.accessToken);
        final AuthResult _authResult = await _firebaseAuth.signInWithCredential(_credential);
        return _returnUserFromFirebase(_authResult.user);
      }
    }
  }

Эта функция имеет тип возврата «Future», но не заканчивается оператором возврата. Попробуйте добавить оператор возврата или изменить тип возврата на void. В чем проблема этого кода? Нужно ли еще добавить этот код после использования двух if? Он даже не распознает оператор return в коде.

1 Ответ

0 голосов
/ 18 июня 2020

Просто добавьте return null; в качестве последней строки метода signInWithGoogle.

Компилятор говорит вам, что если условие _account!=null ложно (учетная запись фактически равна нулю), функция ничего не вернет, потому что ветвь кода с оператором return не будет выполнена.

...