因此,下面是一个代码段,我可以运行该代码段以从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);
}
});
});
}
}
}
任何帮助将不胜感激,如果有人需要更多信息,请告诉我