【发布时间】:2021-05-14 04:01:43
【问题描述】:
我想做的是从 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,
);}}
有人知道怎么做吗?
【问题讨论】:
-
不是真的。我不知道该怎么做,因为那里有太多解释。如果你把它分解为答案会更好。 @nvoigt
-
嗯,重复的意义在于,我们不希望对同一问题的每个变体都有一个单独的、手工定制的答案,因为它很难找到解决方案,因为每个答案仅适用于所问的确切问题。由于您的问题非常广泛,我不知道如何缩小答案范围。您有什么具体有问题吗?您是否遇到编译器错误、运行时错误?
-
我在上面解释过了,我再解释一遍。我想从我的班级中获取我的用户,但我不知道如何将其作为普通用户返回。我想正确地将 fetchUser() 值分配给“配置文件”,这就是我的意思。
-
我不知道该告诉你什么。您得到的两个答案都是正确的,要等待 Future 完成并获得结果,您需要使用
await关键字,如图所示。如果你想知道为什么你必须这样做,你可以点击我上面的链接。如果您对按照答案所说的去做有问题,您需要编辑您的问题以更具体地说明您遇到的问题,或者如果您认为单个问题过多,请提出后续问题。跨度> -
我明白你的意思。问题是我尝试了他们两个,但他们仍然给我错误。我从 FollowUserModel 类中调用我的函数,而不是在状态内部,因为这对我来说太难了,而不是这个。无论如何,谢谢你的帮助