Como ler a importação local do json no flutter?

Aug 30 2020

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

7 ChristopherMoore Aug 30 2020 at 10:01

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);