получить данные из Интернета и нажать на трепетание массива

#flutter #dart

#flutter #dart

Вопрос:

Итак, вот мой код.

 Future<Album> fetchAlbum() async {
  final response =
      await http.get(Uri.https('jsonplaceholder.typicode.com', 'albums/1'));

  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,
    // then parse the JSON.
    return Album.fromJson(jsonDecode(response.body));
    //var data = jsonDecode(response.body);

  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to load album');
  }
}

class Album {
  final int userId;
  final int id;
  final String title;

  Album({@required this.userId, @required this.id, @required this.title});

  factory Album.fromJson(Map<String, dynamic> json) {
    return Album(
      userId: json['userId'],
      id: json['id'],
      title: json['title'],
    );
  }
}
 

Я хочу получить значения альбомов (userId, id, title) и перенести их в массив, чтобы я мог немного посчитать…

Но я не знаю, как это сделать, мне удается отображать данные на экране с помощью метода Builder (), но не использовать их по отдельности.

Комментарии:

1. Не могли бы вы уточнить ???…. Вы просто хотите добавить ответ в список??

2. Да, массив или список будут работать…

Ответ №1:

это должно сработать!

 Future<Album> fetchAlbum() async {
  
 var response = await http.get('https;//jsonplaceholder.typicode.com'   '/albums/1');
  if (response.statusCode == 200) {
   
    return Album data = Album.fromJson(json.decode(response.body));
  } else {
    throw Exception('Failed to load album');
  }
}

Album AlbumFromJson(String str) => TrueOrFalse.fromJson(json.decode(str));

String AlbumToJson(TrueOrFalse data) => json.encode(data.toJson());

class Album {
  final int userId;
  final int id;
  final String title;

  Album({@required this.userId, @required this.id, @required this.title});

  factory Album.fromJson(Map<String, dynamic> json) {
    return Album(
      userId: json['userId'],
      id: json['id'],
      title: json['title'],
    );
  }
Map<String, dynamic> toJson() => {
    "userId": userId,
"id": id,
"title": title,
  };
}
 

Комментарии:

1. как я могу получить доступ к значениям из другого класса?

Ответ №2:

Мне удается заставить его работать, создав функцию и передав значения в качестве параметра внутри фабрики.

Затем в функции «foo» я получаю значения и печатаю их.

 Future<Album> fetchAlbum() async {
  final response =
      await http.get(Uri.https('jsonplaceholder.typicode.com', 'albums/1'));

  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,
    // then parse the JSON.
    return Album.fromJson(jsonDecode(response.body));
  } else {
    // If the server did not return a 200 OK response,
    // then throw an exception.
    throw Exception('Failed to load album');
  }
}

class Album {
  final int userId;
  final int id;
  final String title;

  Album({@required this.userId, @required this.id, @required this.title});

  factory Album.fromJson(Map<String, dynamic> json) {
    foo(json['userId'], json['id'], json['title']);
    return Album(
      userId: json['userId'],
      id: json['id'],
      title: json['title'],
    );
  }
}

void foo(userId, id, title) async {
  final user = title;
  print(user);
}