在 flutter 中从 api 获取数据时出错
error in getting data from api in flutter
我想在 flutter 中从 json plaeholder api 获取名字。但它给出了错误,以下是我的代码:
FutureBuilder(
future: getuser(),
builder: (context, snapshot){
if (snapshot.data==null) {
return Container(
child: Text("nothing"),
);
}
else return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context,i){
return ListTile(title: Text(snapshot.data[i].name),);
}
);
},
)
试试下面的代码,我认为你的问题已经解决,同时添加 id 和电子邮件
Your API Call Function
Future<List<dynamic>> getJobsData() async {
String url = 'https://jsonplaceholder.typicode.com/users';
var response = await http.get(Uri.parse(url), headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
});
return json.decode(response.body);
}
Your Widget
Center(
child: FutureBuilder<List<dynamic>>(
future: getJobsData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
var name = snapshot.data[index]['name'];
var email = snapshot.data[index]['email'];
var id = snapshot.data[index]['id'];
return Card(
shape: RoundedRectangleBorder(
side: BorderSide(color: Colors.green.shade300),
borderRadius: BorderRadius.circular(15.0),
),
child: Column(
children: [
ListTile(
leading: Text(id.toString()),
title: Text(name),
subtitle: Text(email),
),
],
),
);
},
),
);
}
return CircularProgressIndicator();
},
),
),
您的结果屏幕类似于 ->
我想在 flutter 中从 json plaeholder api 获取名字。但它给出了错误,以下是我的代码:
FutureBuilder(
future: getuser(),
builder: (context, snapshot){
if (snapshot.data==null) {
return Container(
child: Text("nothing"),
);
}
else return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context,i){
return ListTile(title: Text(snapshot.data[i].name),);
}
);
},
)
试试下面的代码,我认为你的问题已经解决,同时添加 id 和电子邮件
Your API Call Function
Future<List<dynamic>> getJobsData() async {
String url = 'https://jsonplaceholder.typicode.com/users';
var response = await http.get(Uri.parse(url), headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
});
return json.decode(response.body);
}
Your Widget
Center(
child: FutureBuilder<List<dynamic>>(
future: getJobsData(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
var name = snapshot.data[index]['name'];
var email = snapshot.data[index]['email'];
var id = snapshot.data[index]['id'];
return Card(
shape: RoundedRectangleBorder(
side: BorderSide(color: Colors.green.shade300),
borderRadius: BorderRadius.circular(15.0),
),
child: Column(
children: [
ListTile(
leading: Text(id.toString()),
title: Text(name),
subtitle: Text(email),
),
],
),
);
},
),
);
}
return CircularProgressIndicator();
},
),
),
您的结果屏幕类似于 ->