Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 从Json文件加载和读取数据_Dart_Flutter - Fatal编程技术网

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

Dart 从Json文件加载和读取数据,dart,flutter,Dart,Flutter,我创建了一个简单的应用程序,从json文件中获取标记数据并绘制它们。 下面的代码是从data.json获取数据并添加到标记列表中 我有麻烦了。我无法从json文件中获取数据并将其添加到标记列表中。我该怎么做 我的main.dartcode class MapSample extends StatefulWidget { @override State<MapSample> createState() => MapSampleState(); } class MapSa

我创建了一个简单的应用程序,从json文件中获取标记数据并绘制它们。 下面的代码是从
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文件

  • 然后添加到pubspec.yaml文件

  • 资产:
    -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});
    }