Dart 从Json文件加载和读取数据
我创建了一个简单的应用程序,从json文件中获取标记数据并绘制它们。 下面的代码是从Dart 从Json文件加载和读取数据,dart,flutter,Dart,Flutter,我创建了一个简单的应用程序,从json文件中获取标记数据并绘制它们。 下面的代码是从data.json获取数据并添加到标记列表中 我有麻烦了。我无法从json文件中获取数据并将其添加到标记列表中。我该怎么做 我的main.dartcode class MapSample extends StatefulWidget { @override State<MapSample> createState() => MapSampleState(); } class MapSa
data.json
获取数据并添加到标记列表中
我有麻烦了。我无法从json文件中获取数据并将其添加到标记列表中。我该怎么做
我的main.dart
code
class MapSample extends StatefulWidget {
@override
State<MapSample> createState() => MapSampleState();
}
class MapSampleState extends State<MapSample> {
@override
void initState() {
var location = Location();
FutureBuilder(
future:
DefaultAssetBundle.of(context).loadString('assets/data.json'),
builder: (context, snapshot) {
// Decode the JSON
var new_data = json.decode(snapshot.data.toString());
for (var i = 0; i < new_data.length; i++) {
location = Location(
id: new_data[i]['id'],
lat: new_data[i]['x'],
long: new_data[i]['y'],
);
locations.add(location);
//print(location.lat);
}
});
super.initState();
}
}
试试这个
资产:
-assets/data.json
String jsonData=await DefaultAssetBundle.of(context.loadString(“assets/data.json”);
最终jsonResult=json.decode(jsonData);
我想这就是你要找的
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
void main() {
runApp(Test());
}
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
Future _future;
List<Location> locations;
Future<String> loadJson() async =>
await rootBundle.loadString('assets/data.json');
@override
void initState() {
_future = loadJson();
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: FutureBuilder(
future: _future,
builder: (context, snapshot) {
if (snapshot.hasData) {
for (var v in snapshot.data) {
locations.add(Location(
id: v['id'],
lat: v['x'],
long: v['y'],
));
}
return Text(snapshot.data);
} else {
return CircularProgressIndicator();
}
}),
),
);
}
}
class Location {
final String id;
final double lat;
final double long;
Location({this.id, this.lat, this.long});
}
导入“包装:颤振/材料.省道”;
导入“包:flatter/services.dart”显示根包;
void main(){
runApp(Test());
}
类测试扩展了StatefulWidget{
@凌驾
_TestState createState();
}
类_TestState扩展状态{
未来,未来;;
列出地点;
Future loadJson()异步=>
等待rootBundle.loadString('assets/data.json');
@凌驾
void initState(){
_future=loadJson();
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:未来建设者(
未来:未来,
生成器:(上下文,快照){
if(snapshot.hasData){
for(snapshot.data中的var v){
位置。添加(位置)(
id:v['id'],
纬度:v['x'],
long:v['y'],
));
}
返回文本(snapshot.data);
}否则{
返回循环ProgressIndicator();
}
}),
),
);
}
}
类位置{
最终字符串id;
最终双lat;
最后双长;
位置({this.id,this.lat,this.long});
}
错误到底是什么?你能说得更清楚一点吗?谢谢你的答复。我无法从json文件获取数据并将其添加到标记列表中。请按照此答案对您有帮助
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
void main() {
runApp(Test());
}
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
Future _future;
List<Location> locations;
Future<String> loadJson() async =>
await rootBundle.loadString('assets/data.json');
@override
void initState() {
_future = loadJson();
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: FutureBuilder(
future: _future,
builder: (context, snapshot) {
if (snapshot.hasData) {
for (var v in snapshot.data) {
locations.add(Location(
id: v['id'],
lat: v['x'],
long: v['y'],
));
}
return Text(snapshot.data);
} else {
return CircularProgressIndicator();
}
}),
),
);
}
}
class Location {
final String id;
final double lat;
final double long;
Location({this.id, this.lat, this.long});
}