Итак, ниже приведен фрагмент кода, который я могу запустить, чтобы получить данные из 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);
}
});
});
}
}
}
Любая помощь будет признательна, если кому-то нужна дополнительная информация, пожалуйста,дай мне знать