I am trying to get my data to show on my flutter app from a api (formatted in json) created by connecting mysql on node.js with express.
i am running this error in android studio console
[VERBOSE-2:dart_error.cc(16)] Unhandled exception:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type
'List<dynamic>'
the api currently looks like this
{
"error": false,
"data": [
{
"name": "conner",
"age": 24
},
{
"name": "andrew",
"age": 20
}
],
"message": "Todos list."
}
I am using this tutorial and just replaced his value "title" with mine "name", https://www.youtube.com/watch?v=-PRrdG163to
here is the code I'm running
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(new MaterialApp(
home: new HomePage(),
));
}
class HomePage extends StatefulWidget {
@override
HomePageState createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
Map<String,dynamic> data;
Future<String> getData() async {
var response = await http.get(
Uri.encodeFull("http://10.1.0.109:8080/names"),
headers: {
"Accept": "application/json"
}
);
this.setState(() {
data = JSON.decode(response.body);
});
print (data[1]["data"]);
return "Success!";
}
@override
void initState() {
super.initState();
this.getData();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Listviews"),
),
body: new ListView.builder(
itemCount: data == null ? 0 : data["data"].length,
itemBuilder: (BuildContext context, int index) {
return new Card(
child: new Text(data[index]["data"]),
);
},
),
);
}
}
