Flutter get Object property Name
Solution 1
To get all filenames you can use:
var data = ...
var filenames = [];
for(var i = 0; i < data.length; i++) {
var item = data[0]['files'];
var key = item.keys.first;
var filename = item[key]['filename'];
filenames.add(filename);
}
print(filenames);
Solution 2
I was able to solve using 'keys'
for a json example like this:
{
"1-0001": {
"name": "red",
"hex": "FF0000"
},
"1-0002": {
"name": "blue",
"hex": "0000FF"
},
"1-0003": {
"name": "green",
"hex": "008000"
}
}
I was able to use
Map<String, dynamic> decoded = json.decode(jsonString);
for (var colour in decoded.keys) {
print(colour); // prints 1-0001
print(decoded[colour]['name']); // prints red
print(decoded[colour]['hex']); // prints FF0000
}
Solution 3
You need to define a data type. It is basically a map of (key value-pair) where key is changed as stated in question typeA or typeB This Object has 2 properties option1 and option2 which is also strings.
Here is the sample code to construct model and how to use it
import 'package:TestDart/TestDart.dart' as TestDart;
main(List<String> arguments) {
var map = new Map<String, MyObject>();
map['typeA'] = new MyObject("one", "two");
map['typeB'] = new MyObject("one", "two");
print(map['typeA'].toString());
print(map['typeA'].toString());
}
class MyObject {
String _option1;
String _option2;
MyObject(this._option1, this._option2);
String get option2 => _option2;
String get option1 => _option1;
@override
String toString() {
return 'MyObject{option1: $_option1, option2: $_option2}';
}
}
Relevant answer
map.forEach((key, value) {
print("Key : ${key} value ${value}");
});
nitishk72
A developer who loves to work with various technology. Always ready to learn and explore new technologies. Expertise Primary: JavaScript. Secondary: Flutter Social My Website Youtube Channel GitHub Twitter
Updated on July 09, 2022Comments
-
nitishk72 almost 2 years
I passed the following object:
var myVar = { typeA: { option1: "one", option2: "two" } }
I want to be able to pull out the key typeA from the above structure.
This value can change each time so next time it could be typeB.
So I would like to know if there is any way to do that
-
nitishk72 about 6 yearsActually, I wanted the key name. I got the correct solution but then also thanks for trying
-
silentsudo about 6 yearsi have updated my answer to be more precise and in context of question take a look
-
nitishk72 about 6 yearsI will try it and if it works I will definitely accept.
-
Günter Zöchbauer about 6 yearsI working with Dart since a long time. I'm still rather new to Flutter.
-
ztvmark about 4 yearsThe argument type 'Map<String, Map<String, String>>' can't be assigned to the parameter type 'String'