Json 在Dart/FLIFT中访问列表

Json 在Dart/FLIFT中访问列表,json,Json,我不熟悉Dart/FLAtter,正在从事一个项目,将一些JSON数据解析到Dart中的列表中。我一直在尝试访问列表,Dart文件2--u database.bpreading以选择条目。这在Dart中可能是一个简单的解决方案,但我尝试了许多使用Map的命令,但都没有用。谢谢你的帮助。代码如下:- Dart File # 1 ============= class DatabaseFileRoutines { Future<String> get _localPath async

我不熟悉Dart/FLAtter,正在从事一个项目,将一些JSON数据解析到Dart中的列表中。我一直在尝试访问列表,Dart文件2--u database.bpreading以选择条目。这在Dart中可能是一个简单的解决方案,但我尝试了许多使用Map的命令,但都没有用。谢谢你的帮助。代码如下:-

Dart File # 1
=============
class DatabaseFileRoutines {
  Future<String> get _localPath async {
    final directory = await getApplicationDocumentsDirectory();

    return directory.path;
  }

  Future<File> get _localFile async {
    final path = await _localPath;

    return File('$path/local_persistence.json');
  }

  Future<String> readJournals() async {
    try {
      final file = await _localFile;

      if (!file.existsSync()) {
        print("File does not exist: ${file.absolute}");
        await writeBpreading('{"bpreadings": []}');
      }
      String contents = await file.readAsString();

      return contents;
    } catch (e) {
      print("error readBpreading: $e");
      return "";
    }
  }

  Future<File> writeBpreading(String json) async {
    final file = await _localFile;
    return file.writeAsString('$json');
  }
}

Database databaseFromJson(String str) {
  final dataFromJson = json.decode(str);
  return Database.fromJson(dataFromJson);
}

String databaseToJson(Database data) {
  final dataToJson = data.toJson();
  return json.encode(dataToJson);
}

class Database {
  List<Bpreading> bpreading;

  Database({
    this.bpreading,
  });

  factory Database.fromJson(Map<String, dynamic> json) => Database(
        bpreading: List<Bpreading>.from(
            json["journals"].map((x) => Bpreading.fromJson(x))),
      );

  Map<String, dynamic> toJson() => {
        "journals": List<dynamic>.from(bpreading.map((x) => x.toJson())),
      };
}

class Bpreading {
  String id;
  String date;
  String time;
  String lab1;
  String lab2;

  Bpreading({
    this.id,
    this.date,
    this.time,
    this.lab1,
    this.lab2,
  });

 

  factory Bpreading.fromJson(Map<String, dynamic> json) => Bpreading(
        id: json["id"],
        date: json["date"],
        time: json["time"],
        lab1: json["lab1"],
        lab2: json["lab2"],
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "date": date,
        "time": time,
        "lab1": lab1,
        "lab2": lab2,
      };
}
Dart file #2
============
class BpJournal extends StatefulWidget {
   
   @override
   BpJournalState createState() => BpJournalState();
}

class BpJournalState extends State<BpJournal> {
  Database _database;
  String dia;

  Future<List<Bpreading>> _loadJournals() async {
     await DatabaseFileRoutines().readJournals().then((journalsJson) {
       _database = databaseFromJson(journalsJson);
       _database.bpreading.sort((comp1, comp2) => comp2.date.compareTo(comp1.date));
     });
     return _database.bpreading;
  }

请显示您的json的结构,如给出一个示例。json值的类型为字符串,并按预期手动捕获并存储在数据库中,如下所示:-Bpreading id:8765498 date:200706135125147565 time:135125147565 lab1:76 lab2:212实际上,我想从JSON访问数据列表并显示它以验证数据输入。对不起,我不知道JSON示例BPreading的原因。。被包装成一行。很抱歉,我没有正确理解您的问题,那么您在哪一行出错?我在你的代码中找不到任何错误。我们可以通过查看您的错误消息来尝试解决此问题。你所说的选择条目到底是什么意思?。您正在按日期对它们进行排序,以便筛选一些条目?假设你的json现在看起来像{'journals':[…]},如果我理解正确,你需要一个方法来访问形式为[{},…]的json。如果这是你的问题,请看一下你的json结构,比如举个例子,JSON值是String类型的,手动捕获并存储在数据库中,如下所示:-Bpreading id:8765498 date:200706135125147565 time:135125147565 lab1:76 lab2:212,我想从JSON访问数据列表并显示它以验证数据输入。对不起,我不知道JSON示例BPreading的原因。。被包装成一行。很抱歉,我没有正确理解您的问题,那么您在哪一行出错?我在你的代码中找不到任何错误。我们可以通过查看您的错误消息来尝试解决此问题。你所说的选择条目到底是什么意思?。您正在按日期对它们进行排序,以便筛选一些条目?假设您的json现在看起来像{'journals':[…]},如果我理解正确,您需要一个方法来访问形式为[{},…]的json。如果这是您的问题,请查看