我使用以下函数从Web服务获取用户ID
Future<String> getUserid() async {
final storage = new FlutterSecureStorage();
// Read value
String userID = await storage.read(key: 'userid');
return userID;
}
当使用这功能错误发生
类型“Future”不是类型转换中类型“String”的子类型
这就是我所尝试过的
otherFunction() async {
final String userID = await getUserid();
return userID;
}
Future<String> getUserid() async {
final storage = new FlutterSecureStorage();
// Read value
String userID = await storage.read(key: 'userid');
return userID;
}
print(otherFunction());
仍然错误消息显示为
I/扑动(18036):'Future'的示例
3条答案
按热度按时间0qx6xfy61#
您需要等待您的函数。如果您完全不知道 Dart 中的
Future
,您应该通读this comprehensive article。在 Flutter 中,现在有两种方法来处理这种情况。要么你想在一个常规的函数中调用你的函数。在这种情况下,你可以将该函数标记为
async
或使用getUserid().then((String userID) {...})
。如果你要使用async
,你还需要使用await
:但是,* 在Flutter* 中,您很可能希望在小工具的 *
build
方法 * 中使用您的值。在这种情况下,您应该使用FutureBuilder
:tpgth1q72#
欧盟解决方案是“转换”的后续maneira:
pkbketx93#
不能使用直接将
Future<String>
返回值赋值给String
变量。使用
then
并获取字符串值。试着这样做: