Как работать с Callback?

screenКак только начал я осваивать dart/flutter возникла одна проблема. Как можно передать данные из одного метода в другой? Как я понял, я пытаюсь вынести переменную из асинхронной ф-ии. И проблема в том, что значение переменной за пределы скобок равна нулю. Знаю с помощью callback функции можно передать данные в другой метод, но совсем не понимаю как работают callback в dart.

  Future<Book> getBooks() async {
    Book book = new Book();
    FirebaseDatabase.instance
        .reference()
        .child("posts")
        .onValue
        .listen((Event event) {
      Map<String, dynamic> myMap =
          new Map<String, dynamic>.from(event.snapshot.value);
      myMap.forEach((key, value) {
        book.title = value["user"];
        onGetTitle();
      }); // здесь переменная имеет значении 
      return book;
    });
     // а вот здесь равна нулю.
    return book;
  }

Ответы (0 шт):