Как заставить код ждать завершения функции, прежде чем продолжить? - PullRequest
0 голосов
/ 21 апреля 2020

Я все еще плохо знаком с флаттером и создаю приложение, которое пользователи должны иметь в своем аккаунте, чтобы использовать. Я намерен использовать каждую учетную запись только на одном устройстве, однако у меня возникают трудности с ее реализацией. Мне нужен код, чтобы дождаться завершения функции 'checkDeviceID ()', прежде чем продолжить, так как значение, которое возвращает эта функция, понадобится позже. Вот что у меня есть:

Future signInWithEmailAndPassword(String email, String password) async {
  try {

    bool deviceCheck = await checkDeviceID();

 if (deviceCheck == true) {
    AuthResult result = await _auth.signInWithEmailAndPassword(email: email, password: password);
    FirebaseUser user = result.user;
  }else {
    //RETURN ERROR STATING USER ALREADY HAS A REGISTERED DEVICE
  }} catch(e) {
    print(e.toString());
    return null;
  }
  }
Future<bool> checkDeviceID() async {

    getDeviceIDFromFirestore() async {
         return await Firestore.instance.collection('userInfo').getDocuments();  
    }

    String deviceID = await _getDeviceID();               
    bool deviceCheck = false;                             

    getDeviceIDFromFirestore().then((val){
    if(val.documents.length > 0){
      print(deviceID);
      print(val.documents[0].data["deviceID"]);
    if (val.documents[0].data["deviceID"] == deviceID) {
      deviceCheck = true;
  }
   return deviceCheck;   
     }});
     }

Я предполагаю, что, вероятно, есть гораздо более эффективный способ сделать этот процесс, и любая обратная связь будет принята с благодарностью.

...