dart 在Flutter中获取工厂内的数据

6ju8rftf  于 2023-07-31  发布在  Flutter
关注(0)|答案(1)|浏览(115)

我有一个这样的JSON响应:

{
"uuid": "c6514be0-cced-43b7-b1f4-e66256c1dcaf",
"title": "Harry Potter",
"author": "6637e87b-c2ce-4774-b812-4e8a09312a40",
}

字符串
此答案通过作者密钥与另一个答案相关联:

{
"author": "6637e87b-c2ce-4774-b812-4e8a09312a40",
"name": "J.K. Rowling",
}


所以我有一个图书类的第一React

class Book {
  final String uuid;
  final String title;
  final Author author;

  Book({
    required this.uuid,
    required this.title,
    required this.author,
  });
}


和一个用于第二响应的Author类

class Author {
  final String uuid;
  final String name;

  Book({
    required this.uuid,
    required this.name,
  });
}


我的问题是,是否有一种方法可以在图书工厂期间直接获取作者。我尝试了这个方法,但我不能等待响应:

factory Book.fromJson(Map<String, dynamic> json) {
    return Book(
      uuid: json['uuid'],
      title: json['title'],
      author: fetchAuthor(json['author']),
    );
}


在哪里

Future<Author> fetchAuthor(authorUuid) async {
  http.Response author = await http.get(
    Uri.parse(apiURLAuthors + authorUuid),
  );
  if (author.statusCode == 200) {
    return Author.fromJson(jsonDecode(utf8.decode(author.bodyBytes)));
  } else {
    throw Exception("Failed to load author $authorUuid");
  }
}

iqjalb3h

iqjalb3h1#

我不确定,但你可以在另一个类中调用2个模型类(图书和作者)。然后创建一个函数来调用这两个模态类中的数据,并将其放入全局变量中。现在,您可以全局访问两个模态类的数据。如果你想创建列表,那么你设置列表变量中的所有值,否则你也可以创建不同的数据类型值,并保存该特定索引的数据

相关问题