如何在flutter中读取本地json导入?

rah*_*aha 8 json dart flutter

我在 flutter 目录中有一个 JSON 文件,而不是资产中。

json_data.json:-

 {
    "foo" : "bar"
 }
Run Code Online (Sandbox Code Playgroud)

我想在不同的文件上阅读这个 JSON。

喜欢

myfile.dart:-

 import "package:mypackage/json_data.json" as data;
 import 'dart:convert';
 
  var my_data = json.decode(data);
Run Code Online (Sandbox Code Playgroud)

我收到错误:-

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.
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?为什么我不能在颤振中从本地导入读取 JSON?

Chr*_*ore 20

您应该研究在 flutter 中加载资产。您不能简单地导入任意文件。导入用于源代码/库。

您需要将此文件声明为您的资产 pubspec.yaml

flutter:
  assets:
    - json_data.json
Run Code Online (Sandbox Code Playgroud)

然后在您的代码中,您可以将此资产加载为String:

flutter:
  assets:
    - json_data.json
Run Code Online (Sandbox Code Playgroud)

您可以使用现有代码对 JSON 进行解码,但应将其放置在某个方法主体中。您调用此getJson函数来检索 JSON 字符串:

import 'package:flutter/services.dart' show rootBundle;

Future<String> getJson() {
  return rootBundle.loadString('json_data.json');
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过将 JSON 文件的内容直接作为String.

var my_data = json.decode(await getJson());
Run Code Online (Sandbox Code Playgroud)