flutter - 使用 Flutter/Dart 我应该如何查询不构建小部件的数据?
问题描述
我正在开发一个应用程序,我对这个场景还比较陌生,但是当我想简单地查询一些数据时遇到了一些麻烦。
我在有人登录后调用一个函数。登录函数只发送必要的信息,我想对我的服务器进行二次 ping 以获得更多用户信息,而不仅仅是验证登录信息。
getUser (userid) async{
List<Map<String, dynamic>> user=[] ;
var client = new http.Client();
try {
var req = await client.post(urlPath+'mobileGetUser', body: {'thisUserID': userid'});
var jsonResponse = convert.jsonDecode(req.body);
//print('Here: '+jsonResponse.toString());
var id = jsonResponse['id'] ?? '';
var joinDate = jsonResponse['joinDate'] ?? '';
var userEmail = jsonResponse['userEmail'] ?? '';
var displayName = jsonResponse['displayName'] ?? '';
var timezone = jsonResponse['timezone'] ?? '';
var verified = jsonResponse['verified'] ?? '';
user = [{'id': id}];
user = [{'joinDate': joinDate}];
user = [{'userEmail': userEmail}];
user = [{'displayName': displayName}];
user = [{'timezone': timezone}];
user = [{'verified': verified}];
return user
} finally {
client.close();
}
}
我习惯于在 PHP 中工作。在那种语言中,我会将 JSON 对象或关联数组传递回调用函数,访问各个字段就像
$displayName = $user['displayName'];
但这不是 PHP。列表类型对我来说还是有点奇怪。
从我的调用函数中,我尝试使用以下方法进行测试:
thisUser = getUser(userid);
print('Successful Login: Display name: '+thisUser.toString());
我收到一条消息:
Successful Login: Display name: Instance of 'Future<dynamic>'
我怎样才能访问这些数据?我已经尝试了几种方法来获得它。另外,有没有更好的方法来创建我的列表?我肯定会经历一些不必要的步骤。老实说,我很喜欢将整个 JSONresponse 传递给它。我只是有点超出我的深度。
解决方案
你可以这样做:
thisUser = await getUser(userid);
print('after'); // this will print after getUser() finishes
如果您不await
完成getUser()
,那么您将收到一个Future
.
另一种方法是使用它Future
并为其添加一个侦听器,如下所示:
getUser(userid).then((value) {
print('after'); // this will print after getUser() finishes
thisUser = value;
});
print('before'); // this will print before getUser() finishes
这是假设您没有在小部件上使用它。否则,您可以FutureBuilder
用来检测何时Future
完成并显示某些内容。
推荐阅读
- node.js - 这个 curl 命令的 nodejs 代码是什么
- html - 当父元素的位置固定时,子元素失去浮动
- c# - 修改 .NET Framework 中的默认 customErrors 消息
- android-studio - 在 android studio 中安装 SDK 组件时没有磁盘空间
- networking - 如何通过端口将流量转发到另一个 dns
- javascript - 如何从json构造带有连接线的盒子
- javascript - WebDriverError:没有 ID 的活动会话
- json - 如何使用Angular 7在组件中显示嵌套json数组的项目
- asp.net-core - asp.net核心路由参数始终为空
- python - 比较 Pandas DataFrame 中的 2 列并填充第 3 列