Flutter中从api获取数据时出错
Posted
技术标签:
【中文标题】Flutter中从api获取数据时出错【英文标题】:error in getting data from api in flutter 【发布时间】:2021-11-06 21:03:09 【问题描述】:我想在 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),);
);
,
)
【问题讨论】:
如果您从 API 获取数据,请参考我的回答 here 或 here 或 here 希望对您有所帮助 @RavindraS.Patil 它在项目计数中给出错误“无法无条件访问属性'length',因为接收器可以是'null'。” 你能分享你的 API url 我会测试它吗? jsonplaceholder.typicode.com/users 查看我的回答希望对你有所帮助 【参考方案1】:试试下面的代码,我认为你的问题已经解决了,还添加了 id 和 email
您的 API 调用函数
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);
您的小部件
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中从api获取数据时出错的主要内容,如果未能解决你的问题,请参考以下文章