【发布时间】:2020-04-20 13:44:34
【问题描述】:
在处理我的应用数据方面需要您的帮助。我已经对我的问题进行了很多研究,但还没有找到有效的答案...
这是我的问题: 我希望我的应用程序显示人骨。我要显示的数据存储在 JSON 文件中(它不是整个 json 文件,因为它只是一遍又一遍地重复。括号不是错误):
{
"bones":
[
{
"id": "1",
"name": "Humerus",
"image": "assets/images/...",
"locations": [
{
"location1": [
{
"id": "11",
"title": "proximal",
"image": "assets/images/...",
"subcategory1": [
{
"id": "11A",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "11A1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "11A1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11A1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11A1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "11A2",
"image": "assets/images/...",
"final_item1": {
"id": "11A2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11A2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11A2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "11A3",
"image": "assets/images/...",
"final_item1": {
"id": "11A3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11A3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11A3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}],
"subcategory2": [{
"id": "11B",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "11B1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "11B1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11B1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11B1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "11B2",
"image": "assets/images/...",
"final_item1": {
"id": "11B2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11B2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11B2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "11B3",
"image": "assets/images/...",
"final_item1": {
"id": "11B3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11B3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11B3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}],
"subcategory3": [{
"id": "11C",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "11C1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "11C1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11C1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11C1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "11C2",
"image": "assets/images/...",
"final_item1": {
"id": "11C2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11C2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11C2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "11C3",
"image": "assets/images/...",
"final_item1": {
"id": "11C3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "11C3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "11C3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}]
}],
"location2": [
{
"id": "12",
"title": "diaphysär",
"image": "assets/images/...",
"subcategory1": [{
"id": "12A",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "12A1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "12A1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12A1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12A1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "12A2",
"image": "assets/images/...",
"final_item1": {
"id": "11A2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12A2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12A2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "12A3",
"image": "assets/images/...",
"final_item1": {
"id": "12A3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12A3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12A3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}],
"subcategory2": [{
"id": "12B",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "12B1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "12B1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12B1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12B1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "12B2",
"image": "assets/images/...",
"final_item1": {
"id": "12B2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12B2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12B2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "12B3",
"image": "assets/images/...",
"final_item1": {
"id": "12B3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12B3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12B3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}],
"subcategory3": [{
"id": "12C",
"title": "extraartikulär 2-Segment unifokal",
"image": "assets/images/...",
"subsubcategory1": [{
"id": "12C1",
"title": "Abriß des Tuberculum majus",
"image": "assets/images/...",
"final_item1": {
"id": "12C1.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12C1.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12C1.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory2": [{
"title": "Abriß des Tuberculum majus",
"id": "12C2",
"image": "assets/images/...",
"final_item1": {
"id": "11C2.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12C2.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12C2.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}],
"subsubcategory3": [{
"title": "Abriß des Tuberculum majus",
"id": "12C3",
"image": "assets/images/...",
"final_item1": {
"id": "11C3.1",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item2": {
"id": "12C3.2",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
},
"final_item3": {
"id": "12C3.3",
"title": "Tuberculum majus ohne Dislokation",
"image": "assets/images/...",
"model": "assets/images/..."
}
}]
}]
}]
}]
}
]}
有 3 个地点,每个地点有 3 个子类别,每个 3 个子子类别,每 3 个最终项目。
目前我只是试图在控制台中打印骨骼的名称。我有这些课程:
class Bone {
final String id;
final String name;
final String imageUrl;
final List<Locations> locations;
Bone({this.id, this.imageUrl, this.name, this.locations});
factory Bone.fromJson(Map<String, dynamic> json){
return Bone(
id: json['id'],
name: json['name'],
imageUrl: json['image'],
locations: json['locations']
);
}
}
class Locations{
final List<Location> location;
Locations(this.location);
}
class Location{
final String id;
final String title;
final String imageUrl;
final List<Subcategory> subcategory;
Location({this.id, this.title, this.imageUrl, this.subcategory});
}
class Subcategory{
final String id;
final String title;
final String imageUrl;
final List<Subsubcategory> subsubcategory;
Subcategory({this.id, this.title, this.imageUrl, this.subsubcategory});
}
class Subsubcategory{
final String id;
final String title;
final String imageUrl;
final FinalItem finalItem;
Subsubcategory({this.id, this.title, this.imageUrl, this.finalItem});
}
class FinalItem{
final String id;
final String title;
final String imageUrl;
FinalItem({this.id, this.title, this.imageUrl});
}
还有这个测试画面:
import 'dart:convert';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import '../models/bone.dart';
class TestScreen extends StatefulWidget {
static const routeName = '/test';
@override
_TestScreenState createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen> {
Future<String> loadDataFromAssets() async {
return await rootBundle.loadString('assets/api/data.json');
}
Future loadData() async {
String jsonString = await loadDataFromAssets();
final jsonResponse = json.decode(jsonString);
Bone bone = Bone.fromJson(jsonResponse);
print('Name ${bone.name}');
}
@override
void initState() {
super.initState();
loadData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("test")),
);
}
}
在我的调试控制台中抛出此错误:
E/flutter (7644): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:“List”类型不是“List”类型的子类型
提前谢谢你:)
【问题讨论】: