Я все еще плохо знаком с флаттером и создаю приложение, которое пользователи должны иметь в своем аккаунте, чтобы использовать. Я намерен использовать каждую учетную запись только на одном устройстве, однако у меня возникают трудности с ее реализацией. Мне нужен код, чтобы дождаться завершения функции '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;
}});
}
Я предполагаю, что, вероятно, есть гораздо более эффективный способ сделать этот процесс, и любая обратная связь будет принята с благодарностью.