Как получить значение этой переменной за пределами .then (() {});Скажите в флаттере? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть следующие строки кода

bool check;

Firestore.instance.collection('tests').where('name',isEqualTo: snapshot['name'].replaceAll('.mp4','.txt')).getDocuments().then((docs){
  if(docs.documents[0].exists) check = true;
  else check = false;
});
debugPrint(check.toString());

Это приводит к ошибке, говорящей о том, что bool не может иметь значение null, так как я могу получить значение check изнутри.then, чтобы я мог использовать его вне оператора .then?

1 Ответ

0 голосов
/ 24 декабря 2018

Если вы используете предложение .then(), вам нужно выполнить всю работу внутри него, и вы не можете использовать его значения снаружи, потому что не знаете, когда получаете ответ.

Вы можетеawait ответ там и пометьте метод, который включает ваш код, с помощью async.

bool check;
final docs = Firestore.instance.collection('tests').where('name',isEqualTo: snapshot['name'].replaceAll('.mp4','.txt')).getDocuments();
if(docs.documents[0].exists)
  check = true;
else
  check = false;
debugPrint(check.toString());

или

Future<void> doSomething() async {
  bool check;
  final docs = Firestore.instance.collection('tests').where('name',isEqualTo: 
  snapshot['name'].replaceAll('.mp4','.txt')).getDocuments();
  if(docs.documents[0].exists)
    check = true;
  else
    check = false;
  debugPrint(check.toString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...