首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从Json文件加载和读取数据

从Json文件加载和读取数据
EN

Stack Overflow用户
提问于 2019-05-15 12:40:51
回答 2查看 2.9K关注 0票数 0

我创建简单的应用程序,从json文件中获取标记的数据并绘制它们。下面的代码是从data.json获取数据并添加到标记列表中。

我有麻烦了。我无法从json文件中获取数据并将其添加到我的标记列表中。我该怎么做呢?

我的main.dart代码

代码语言:javascript
代码运行次数:0
运行
复制
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();
  }
}

我的data.json

代码语言:javascript
代码运行次数:0
运行
复制
[{
    "rownum": 1,
    "id": "E3E0D2C5-CB82-4AF3-8D5D-4CD323560F59",
    "x": 10.99803453,
    "y": 106.65676933,
  }, {
    "rownum": 2,
    "id": "5FFB6736-7D1F-4B40-A397-32EB3128BC30",
    "x": 10.99793271,
    "y": 106.65666751,
  },
EN

回答 2

Stack Overflow用户

发布于 2019-05-15 19:10:04

尝尝这个。

  1. 您必须将data.json文件添加到assests.

然后将

  1. 添加到pubspec.yaml文件中。

代码语言:javascript
代码运行次数:0
运行
复制
assets:
    - assets/data.json

  1. 然后将其添加到下面的代码中。

代码语言:javascript
代码运行次数:0
运行
复制
String jsonData = await DefaultAssetBundle.of(context).loadString("assets/data.json");
final jsonResult = json.decode(jsonData);
票数 1
EN

Stack Overflow用户

发布于 2019-05-16 00:10:48

我想这就是你要找的。

代码语言:javascript
代码运行次数:0
运行
复制
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});
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56141871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档