【发布时间】:2020-04-15 08:54:26
【问题描述】:
我正在尝试使用 Flutter 编写一个 Matrix 服务器客户端应用程序。
我从用户所属的服务器请求组。
Future<List> joinedRooms(String accessToken) async {
String url = server + "/_matrix/client/r0/joined_rooms";
Map<String, String> headers = {"Authorization": "Bearer $accessToken"};
Response response = await get(url, headers: headers);
JoinedRooms roomsID = JoinedRooms.fromJson(jsonDecode(response.body));
List names = [];
roomsID.joinedRooms.forEach((roomID) async {
await roomState(accessToken, roomID).then((value) async {
await names.add(value[6].content.name);
});
return names;
});
response.body 的以下值即将到来
{
"joined_rooms": [
"!JSHWMPAgoJdkQvRQrr:example.com",
"!WzjRnPpUASluIsGTuo: example.com"
]
}
使用.forEach 方法,我想为每个组id 请求组的名称并将其添加到names 列表中。
Future<List<RoomState>> roomState(String accessToken, String roomID) async {
String url = server + "/_matrix/client/r0/rooms/$roomID/state";
Map<String, String> headers = {"Authorization": "Bearer $accessToken"};
Response response = await get(url, headers: headers);
List<RoomState> states = (json.decode(response.body) as List).map((i) => RoomState.fromJson(i)).toList();
return states;
}
names 的列表始终为空。 async 不等待代码的 sn-p。我尝试了很多方法,但都没有成功。
【问题讨论】:
-
您是否从
roomState(accessToken, roomID)获取值? -
简单
for...loop有什么问题吗?
标签: flutter asynchronous dart future