颤抖,等待Firebase数据被捕获

时间:2019-10-01 20:18:39

标签: android firebase firebase-realtime-database flutter dart

因此,下面是一个代码段,我可以运行该代码段以从Firebase获取数据。我想等待数据被捕获,然后再继续下一步。现在,我遇到了这个问题,并引起了一些问题。每次在此函数上调用每次构建时,我都希望该函数运行并获取数据,然后显示它。这样一来,数据就总是刷新。我也想清除我从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);
            }
          });
        });
      }
    }
  }

任何帮助将不胜感激,如果有人需要更多信息,请告诉我

0 个答案:

没有答案