Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 我如何转换未来<;用户>;给我班上的用户?_Flutter_Dart - Fatal编程技术网

Flutter 我如何转换未来<;用户>;给我班上的用户?

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

我试图做的是从fetchUser获取配置文件,但除了字符串之外,我不知道还有什么其他方法可以提取http数据

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类调用我的函数,而不是在状态内部,因为这对我来说太难了,而不是这个。无论如何,谢谢你的帮助