Получить данные из Firestore и рендерить в другую функцию DART - PullRequest
0 голосов
/ 17 октября 2019

Я хочу получить данные из firebase и поместить их в API, у меня есть две функции

Эта функция для получения данных из firestore

_getLang() async{
  final FirebaseUser user = await FirebaseAuth.instance.currentUser();
  final String uid = user.uid.toString();
  DocumentReference documentReference = Firestore.instance.collection("userDetails").document(uid);
  documentReference.get().then((datasnapshot) {
    if (datasnapshot.exists) {
      return datasnapshot.data['lang'].toString();
    }
    else{
      return " ";
    }
  });
}

и эта для получения данных. из API

Future<List<Book>> getBooks(title) async {
  var random = Random.secure();
  var value = random.nextInt(300);
  http.Response response = await http.get(
      'https://www.googleapis.com/books/v1/volumes?q=subject:flutter&orderBy=newest&maxResults=7&printType=books&langRestrict='+_getLang()', headers:{"Accept":"aplication/json"});
  List<Book> books = new List<Book>();
  var responseJson = json.decode(response.body);
  if (responseJson["items"] != null)
    responseJson["items"].forEach((v) => books.add(Book.fromJson(v)));
  return books;
}

1 Ответ

1 голос
/ 17 октября 2019

Вы не можете сделать это асинхронным способом _getLang ().

переписать getBooks () в это:

Future<List<Book>> getBooks(title) async {
  var myLang = await _getLang();
  var random = Random.secure();
  var value = random.nextInt(300);
  http.Response response = await http.get(
      'https://www.googleapis.com/books/v1/volumes?q=subject:flutter&orderBy=newest&maxResults=7&printType=books&langRestrict='+myLang, headers:{"Accept":"aplication/json"});
  List<Book> books = new List<Book>();
  var responseJson = json.decode(response.body);
  if (responseJson["items"] != null)
    responseJson["items"].forEach((v) => books.add(Book.fromJson(v)));
  return books;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...