Reputation: 213
I am using blogger api and in my app I just want to get the "content" value nothing more nothing less. How can I do that without serilizations?
This is the json response:
{
"kind": "blogger#postList",
"items": [
{
"content": {
"name": "Tesula Parajuli",
"address":"Biratnagar",
"type": "Kabita",
"text":"Ajai ma rati\\nk ssss sapana ma\\nmai mari gayeko\\nmai mari gayeko.",
"fb_link":"https://www.facebook.com/Sulav2059",
"photo":"https://scontent.fktm1-1.fna.fbcdn.net/v/t1.0-1/c17.0.240.240a/p240x240/133496545_687004428585872_4614063345221687073_o.jpg?_nc_cat=107&ccb=2&_nc_sid=7206a8&_nc_ohc=o-ZPIXOH3B0AX8RT6fj&_nc_ht=scontent.fktm1-1.fna&tp=27&oh=c90b454649168f6d0b91454d5c7155b9&oe=60130954",
},
"etag": "\"dGltZXN0YW1wOiAxNjA5NTcyNzExMjA1Cm9mZnNldDogLTI4ODAwMDAwCg\""
},
{
"content": {
"name":"Sulav Parajuli",
"address":"Biratnagar",
"type": "Kabita",
"text":"Ajai ma rati\\nk dekhe sapana ma\\nmai mari gayeko\\nmai mari gayeko.",
"fb_link":"https://www.facebook.com/Sulav2059\",\n\"photo\":\"https://scontent.fktm1-1.fna.fbcdn.net/v/t1.0-1/c17.0.240.240a/p240x240/133496545_687004428585872_4614063345221687073_o.jpg?_nc_cat=107&ccb=2&_nc_sid=7206a8&_nc_ohc=o-ZPIXOH3B0AX8RT6fj&_nc_ht=scontent.fktm1-1.fna&tp=27&oh=c90b454649168f6d0b91454d5c7155b9&oe=60130954",
},
"etag": "\"dGltZXN0YW1wOiAxNjA5NTcyNjgxOTY2Cm9mZnNldDogLTI4ODAwMDAwCg\""
}
],
"etag": "\"MjAyMS0wMS0wMlQwNzozMTo1MS4yMDVa\""
}
The code for getting data:
Future<http.Response> readDataFromDb() async {
var url = 'url-text';
return http.get(
url,
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
);
}
And I am doing this on initState:
readDataFromDb().then((value){
setState(() {
values = value.body;
});
});
Now what I want is list of the contents saved in something like List which I can iterate through to create listview.
Upvotes: 0
Views: 49
Reputation: 4773
Try this. But next time, make some efforts
class _SamplePageState extends State<SamplePage> {
List contents;
@override
void initState() {
super.initState();
// Initialize your variable
contents = [];
initData();
}
void initData() {
readDataFromDb().then((response) {
var res = jsonDecode(response.body);
if (mounted) setState(() {
for (var item in res["items"]) contents.add(item["content"]);
});
}).catchError((_) {});
}
Future<http.Response> readDataFromDb() async {
var url = 'url-text';
return await http.get(url, headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemCount: contents.length,
itemBuilder: (context, index) {
return ListTile(
title: Text("Name : " + contents[index]["name"]),
);
},
),
);
}
}
Upvotes: 1