38
loading...
This website collects cookies to deliver better user experience
[
{
"id": 1,
"nome": "Bulbassaur",
"regiao": "Kanto",
"tipos": [
"Grass",
"Poison"
]
},
{
"id": 2,
"nome": "Ivyssaur",
"regiao": "Kanto",
"tipos": [
"Grass",
"Poison"
]
},
{
"id": 4,
"nome": "Charmander",
"regiao": "Kanto",
"tipos": [
"Fire"
]
}
]
class Pokemon {
int id;
String? nome;
String? regiao;
List<String>? tipos;
Pokemon({this.id, required this.nome, this.regiao, this.tipos});
}
model
, um modelo. No caso, atribuímos esses dados aos atributos de uma classe.Pokemon.fromJson(Map<String, dynamic> json) {
id = json['id'];
nome = json['nome'];
regiao = json['regiao'];
tipos = json['tipos'].cast<String>();
}
casting
do Map utilizado como parâmetro é ?Exemplo de um JSON genérico
{
"chave": "valor"
}
poke_repository.dart
.imports
import 'dart:async';
import 'package:flutter/services.dart' show rootBundle;
import 'dart:convert';
import 'package:pokemon_json/poke_model.dart'; // import da classe
poke_db.json
.Future<String> _carregarPokemonJSON() async {
return await rootBundle.loadString('poke_db.json');
// Aqui passamos o [caminho] do arquivo JSON
}
// Como temos uma lista em nosso objeto JSON, podemos então dizer para nossa função que pode aguardar uma List<Pokemon>
Future<List<Pokemon>> carregarPokemon() async {
// Atribuímos a String de todo o JSON para a variável pokeJsonString
String pokeJsonString = await _carregarPokemonJSON();
// Agora utilizamos o método json.decode() para "decodificarmos" essa String
final respostaJson = json.decode(pokeJsonString);
// criando lista genérica para armazenar os Pokémon do objeto JSON
final lista = <Pokemon>[];
// Atribuindo cada objeto da lista JSON para a classe Dart Pokémon utilizando o método Pokemon.fromJson()
for (var pokemon in respostaJson) {
final poke = new Pokemon.fromJson(pokemon);
lista.add(poke);
}
// e finalmente teremos a lista com nossos Pokémon
return lista;
}
poke_db.json
.Future<void> main() async {
final listaPokemon = await carregarPokemon();
print(listaPokemon[0].nome); // Bulbassaur
for (Pokemon pkmn in listaPokemon) {
print(pkmn.nome);
/*
Bulbassaur
Ivyssaur
Charmander
*/
}
}