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获取数据时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中从 API 获取数据

Flutter中从API获取数据时出现格式异常

如何在 Flutter 中从 API 获取 JSON 数据

http包在flutter中从api获取错误的图像url

在 vuejs 应用程序中从 axios 获取数据时出错 [重复]

获取错误(生成 XML 文档时出错。)在 asp.net 的 extjs 中从服务器端获取数据