Como ler a importação local do json no flutter?
Eu tenho um arquivo JSON no diretório flutter, não em ativos.
json_data.json:-
{
"foo" : "bar"
}
Eu quero ler este JSON em arquivos diferentes.
Como
meuarquivo.dart:-
import "package:mypackage/json_data.json" as data;
import 'dart:convert';
var my_data = json.decode(data);
Estou recebendo o erro:-
The name 'data' refers to an import prefix, so it must be followed by '.'.
Try correcting the name to refer to something other than a prefix, or renaming the prefix.
Qual é o problema aqui? por que não consigo ler o JSON da importação local no flutter?
Respostas
Você deve olhar para o carregamento de ativos no flutter . Você não pode simplesmente importar um arquivo arbitrário. A importação é para código-fonte/bibliotecas.
Você precisa declarar este arquivo como um ativo em seupubspec.yaml
flutter:
assets:
- json_data.json
Então, no seu código, você pode carregar esse ativo como String:
import 'package:flutter/services.dart' show rootBundle;
Future<String> getJson() {
return rootBundle.loadString('json_data.json');
}
Você pode decodificar o JSON com seu código existente, mas ele deve ser colocado em um corpo de método em algum lugar. Você chama esta getJsonfunção para recuperar a string JSON:
var my_data = json.decode(await getJson());
Como alternativa, você pode simplificar ainda mais colocando o conteúdo do seu arquivo JSON diretamente no código como um String, mas isso pode não ser possível, depende do uso pretendido desse JSON.
const String data = '''
{
"foo" : "bar"
}
''';
var my_data = json.decode(data);