Flutter 树形结构数据的模型转换处理
树形结构数据是一个无限层级的数据,在处理数据模型转换的时候,需要我们从里到外的递归数据结构。废话不多说直接上代码。
List<Map<String, dynamic>> arr = [
{
"parent_id": 0,
"name": "父级1",
"id": 1063,
"checked": false,
"show": false,
"isHalf": false,
"children": [
{
"parent_id": 1063,
"name": "数据1",
"checked": false,
"show": false,
"isHalf": false,
"id": 1318,
"children": []
},
{
"parent_id": 1063,
"name": "数据2",
"checked": false,
"show": false,
"isHalf": false,
"id": 1320,
"children": [
{
"parent_id": 1320,
"name": "数据3",
"checked": false,
"show": false,
"isHalf": false,
"id": 1321,
"children": []
},
]
},
]
},
{
"parent_id": 0,
"name": "父级2",
"id": 1064,
"checked": false,
"show": false,
"isHalf": false,
"children": [
{
"parent_id": 1064,
"name": "数据4",
"checked": false,
"show": false,
"isHalf": false,
"id": 1065,
"children": []
},
{
"parent_id": 1064,
"name": "数据5",
"checked": false,
"show": false,
"isHalf": false,
"id": 1066,
"children": [
{
"parent_id": 1066,
"name": "数据6",
"checked": false,
"show": false,
"isHalf": false,
"id": 1067,
"children": []
},
]
},
]
},
];
List<NodeModel> listModel = [];
for (var i = 0; i < arr.length; i++) {
var item = NodeModel(
id: arr[i]['id'],
name: arr[i]['name'],
parentId: arr[i]['parent_id'],
checked: arr[i]['checked'],
children: [],
);
// NodeModel item = NodeModel.fromJson(arr[i]);
if (arr[i]['children'] != null && arr[i]['children'].length > 0) {
loop(item.children, arr[i]['children']);
}
listModel.add(item);
}
loop(obj, data) {
for (var i = 0; i < data.length; i++) {
var item = NodeModel(
id: data[i]['id'],
name: data[i]['name'],
parentId: data[i]['parent_id'],
checked: data[i]['checked'],
children: []);
// NodeModel item = NodeModel.fromJson(arr[i]);
if (data[i]['children'] != null && data[i]['children'].length > 0) {
loop(item.children, data[i]['children']);
}
obj.add(item);
}
}
print(listModel);
如果觉得不错的话,点个小心心哟