Флаттер, ожидая сбора данных Firebase - PullRequest
0 голосов
/ 01 октября 2019

Итак, ниже приведен фрагмент кода, который я могу запустить, чтобы получить данные из Firebase. Я хочу дождаться сбора данных, прежде чем перейти к следующему шагу. Прямо сейчас у меня есть это, и это вызывает некоторые проблемы. Сразу каждый раз, когда вызывается сборка для этой функции, я хочу, чтобы эта функция запускалась и получала данные, а затем отображала их. Это так, что данные всегда обновляются. Также я хочу очистить 2 списка, которые я захватил с базы огня, прежде чем я вернусь. Я пытаюсь сделать это выше, где я вызываю функцию, но кажется, что сборка запускается несколько раз, а также выходит из строя, и мой список ВСЕГДА будет пустым. В любом случае, как я могу это исправить?

class _MainSessionPageState extends State<MainSessionPage> {

  String playerName;
  List<String> _players = [];
  List<String> _initiative = [];

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }

  @override
  Widget build(BuildContext context) {


    _players.clear();
    _initiative.clear();
    getPlayerInfo();
...

И это моя функция, к которой я обращаюсь за данными Firebase.

getPlayerInfo() async {
    final response = await FirebaseDatabase.instance
        .reference()
        .child("Sessions")
        .child(MyGlobals().RHomeName())
        .once();
    if (response.value != null) {
      Map<dynamic, dynamic> data = response.value;
      //response.value.forEach((v) => users.add(v));
      //print(users);
      if (data != null) {
        data.forEach((key, values) {
          values.forEach((key, values) {
            if (key == "initiative") {
              _initiative.add(values);
            }
            if (key == "playerName") {
              _players.add(values);
            }
          });
        });
      }
    }
  }

Любая помощь будет признательна, если кому-то нужна дополнительная информация, пожалуйста,дай мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...