flutter - 异步方法在 initState 中无法正常工作
问题描述
我在 initState 中执行这两个函数(按此顺序):
getUsers() async {
usersStream = authBloc.getUsers();
usersStream.listen((allUsers) {
for (ApplicationUser user in allUsers) {
users.add(user.username);
}
});
}
fetchEvent() async {
await eventBloc.getEvent(widget.eventId).then((value) {
event = value;
title.text = event.title;
for (var j = 0; j < event.dienstMap["Besetzung"].length; j++) {
besetzungsList.add(event.dienstMap["Besetzung"][j]);
}
for (var i = 0; i < event.dienstMap["Aufgabe"].length; i++) {
aufgabenList.add(event.dienstMap["Aufgabe"][i]);
zeitList.add(event.dienstMap["Aufgabe"][i]);
teamList.add(event.dienstMap["Team"][i]);
dataTableRows.add(DataRow(
cells: [
DataCell(
Text(event.dienstMap["Aufgabe"][i]),
onTap: () {
removeRow(i);
},
),
DataCell(
Text(event.dienstMap["Zeit"][i]),
onTap: () {},
),
DataCell(
Text(event.dienstMap["Team"][i]),
onTap: () {},
),
DataCell((i > event.dienstMap["Besetzung"].length - 1 == true)
? DropDown(
hint: "Wählen",
users: users,
besetzungsListChanged: (String value) {
besetzungsList.removeAt(i);
besetzungsList.insert(i, value);
},
fromDropDown: (bool value) => fromDropDown = value,
)
: DropDown(
hint: event.dienstMap["Besetzung"][i],
users: users,
besetzungsListChanged: (String value) {
besetzungsList.removeAt(i);
besetzungsList.insert(i, value);
//besetzungsList.replaceRange(start, end, replacement)
},
fromDropDown: (bool value) => fromDropDown = value,
))
],
));
}
});
}
在fetchEvent
我使用users
列表的方法中,我在方法中添加值getUsers
。
问题是,当fetchEvent
方法被执行时,列表的值不存在。热重载后,值在那里,我可以使用下拉按钮。
解决方案
推荐阅读
- c# - 尝试在 C# 中传递 2 个参数时,SQL Server 存储过程或函数指定了太多参数
- eclipse-hono - 501 未在设备/租户端点上实现
- uwp - UWP:值转换器的转换和转换回如何工作?
- python - 检测小部件何时从可见变为不可见或相反
- python - Python Pywinauto如何使用Pywinauto for Desktop应用程序验证UI元素是否存在
- powershell - Powershell 捕获错误 (ExtendedTypeSystemException)
- php - 如何在docker中使用symfony从请求中获取客户端ip
- python - 用 for 循环填充熊猫数据框
- ios - firebase中的多个user_pseudo_id
- c# - 用于分配对象属性的语法糖