Flutter 我如何转换未来<;用户>;给我班上的用户?
我试图做的是从fetchUser获取配置文件,但除了字符串之外,我不知道还有什么其他方法可以提取http数据Flutter 我如何转换未来<;用户>;给我班上的用户?,flutter,dart,Flutter,Dart,我试图做的是从fetchUser获取配置文件,但除了字符串之外,我不知道还有什么其他方法可以提取http数据 class FollowingUserModel { final String id; final String author; User profile; final String profileid; FollowingUserModel({this.id, this.profileid, this.author, this.profile}) { profi
class FollowingUserModel {
final String id;
final String author;
User profile;
final String profileid;
FollowingUserModel({this.id, this.profileid, this.author, this.profile}) { profile = fetchUser() as User; }
Future<User> fetchUser() async{
final response = await http.get("$SERVER_IP/api/users/$profileid/?format=json");
if (response.statusCode == 200) {
var responseJson = json.decode(response.body);
return User.fromJSON(responseJson);}}
factory FollowingUserModel.fromJSON(Map<String, dynamic> jsonMap) {
return FollowingUserModel(
id: jsonMap['id'] as String,
author: jsonMap['author'] as String,
profileid: jsonMap['profile'] as String,
);}}
类用户模型{
最终字符串id;
最终字符串作者;
用户档案;
最终字符串profileid;
以下用户模型({this.id,this.profileid,this.author,this.profile}){profile=fetchUser()作为用户;}
Future fetchUser()异步{
最终响应=等待http.get(“$SERVER_IP/api/users/$profileid/?format=json”);
如果(response.statusCode==200){
var responseJson=json.decode(response.body);
返回User.fromJSON(responseJson);}
工厂:UserModel.fromJSON(映射jsonMap){
返回用户模型(
id:jsonMap['id']作为字符串,
author:jsonMap['author']作为字符串,
profileid:jsonMap['profile']作为字符串,
);}}
有人知道怎么做吗?只要创建一个异步函数即可 如果您有
Future
,要将其转换为User
,您需要添加wait
;要使用wait
,您需要添加async
:
Future<void> test() async {
User user = await fetchUser();
}
Future test()异步{
User User=wait fetchUser();
}
您可以了解有关异步函数的更多信息,只需创建一个异步函数即可 如果您有
Future
,要将其转换为User
,您需要添加wait
;要使用wait
,您需要添加async
:
Future<void> test() async {
User user = await fetchUser();
}
Future test()异步{
User User=wait fetchUser();
}
您可以从调用的位置了解有关异步函数的更多信息
User user = await followingUserModel.fetchUser();
Future
意味着它将异步(在将来)返回一个用户对象,因此使用wait
进行调用,然后您的代码将等待,直到它得到返回。从您调用的位置执行此操作
User user = await followingUserModel.fetchUser();
Future
意味着它将异步(在将来)返回一个用户对象,因此使用wait
进行调用,然后您的代码将等待,直到它得到返回。操作员的@nvoigt update answer。我现在工作?我必须让用户退出未来的异步函数,以便能够将其分配给“profile”。在里面,你还需要什么吗?操作员'@nvoigt更新答案。我现在工作?我必须让用户退出未来的异步函数,以便能够将其分配给“profile”。在里面,它可以工作。你还需要什么吗?我需要在我使用的类模型中调用它。你能告诉我更多吗?你在哪里调用fetchUser()函数?那么为什么要在模型类中获取数据呢?分离类的责任。我需要在我使用的类模型中调用它。你能告诉我更多吗?你在哪里调用fetchUser()函数?那么为什么要在模型类中获取数据呢?把班级的责任分开。不是真的。我不知道该怎么办,因为里面有太多的解释。如果你把它分解成一个答案会更好@nvoigtWell,重复的问题在于,我们不希望对同一问题的每个变体都有一个单一的、手工定制的答案,因为这使得很难找到解决方案,因为每个答案只适用于所问的确切问题。因为你的问题很广泛,我不知道如何缩小答案的范围。你有什么特别的问题吗?你有编译器错误,运行时错误吗?我在上面解释过,我会再解释一遍。我想从我的类中获取我的用户,但我不知道如何将其作为普通用户返回。我想将fetchUser()值正确地分配给“profile”,这就是我的意思。我不知道该告诉你什么。您得到的两个答案是正确的,要等待将来完成并获得结果,您需要使用wait
关键字,如图所示。如果你想知道为什么你必须这样做,你可以按照我上面的链接。如果你在回答问题时遇到问题,你需要编辑你的问题以更具体地说明你的问题,或者如果你认为一个问题太难回答,就提出一个后续问题。我明白你的意思。问题是我尝试了两个问题,但他们仍然会给我错误。我从下面的UserModel类调用我的函数,而不是在状态内部,因为这对我来说太难了。无论如何,谢谢你的帮助。不是真的。我不知道该怎么做,因为那里有太多的解释。如果你把它分解为一个答案会更好@nvoigtWell,重复的问题在于,我们不希望对同一问题的每个变体都有一个单一的、手工定制的答案,因为这使得很难找到解决方案,因为每个答案只适用于所问的确切问题。因为你的问题很广泛,我不知道如何缩小答案的范围。你有什么特别的问题吗?你有编译器错误,运行时错误吗?我在上面解释过,我会再解释一遍。我想从我的类中获取我的用户,但我不知道如何将其作为普通用户返回。我想将fetchUser()值正确地分配给“profile”,这就是我的意思。我不知道该告诉你什么。您得到的两个答案是正确的,要等待将来完成并获得结果,您需要使用wait
关键字,如图所示。如果你想知道为什么你必须这样做,你可以按照我上面的链接。如果你在回答问题时遇到问题,你需要编辑你的问题以更具体地说明你的问题,或者如果你认为一个问题太难回答,就提出一个后续问题。我明白你的意思。问题是我尝试了两个问题,但他们仍然会给我错误。我从下面的UserModel类调用我的函数,而不是在状态内部,因为这对我来说太难了,而不是这个。无论如何,谢谢你的帮助