Map<String, dynamic> values = {
'1': <String, dynamic>{
'1-1': '1-1-value',
},
'2': <String, dynamic>{
'2-1': '2-1-value',
'2-2': <String, dynamic>{'2-2-1': '2-2-1-value'}
},
'3': <String, dynamic>{
'3-1': '3-1-value',
},
};
var findedValue = findMapValue('2-2-1',values);
///查找字段的值
dynamic findMapValue(String keyName, Map<String, dynamic> map) {
const String findedKeyName = 'finded';
const String valueKeyName = 'value';
Map<String, dynamic> recursiveFind(String fieldApiName, Map<String, dynamic> fieldValues) {
for (var entry in fieldValues.entries) {
if (entry.key == fieldApiName) {
return {findedKeyName: true, valueKeyName: entry.value};
}
var value = entry.value;
if (value is Map<String, dynamic>) {
Map<String, dynamic> returnValue = recursiveFind(fieldApiName, value as Map<String, dynamic>);
if (returnValue[findedKeyName]) {
return returnValue;
}
}
}
return {findedKeyName: false, valueKeyName: null};
}
Map<String, dynamic> findResult = recursiveFind(field, map);
return findResult[valueKeyName];
}