【问题标题】:parsing JSON file in flutter在颤振中解析JSON文件
【发布时间】:2021-02-25 11:05:36
【问题描述】:

我在 Flutter 中解析这种类型的 JSON 文件,但出现错误。 最初,我可以在控制台中打印整个数据,但是当我只想要名称时,它会给我一个错误。 在 JSON 文件的图像中波纹管。

这是我为解析而编写的代码,它将名称的第一个值设为“Abul-Abbas”,然后它会引发错误。

import 'package:flutter/material.dart';
import 'package:flutter_appnew/Constants.dart';
import 'package:flutter_appnew/network.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';




const URL ='https://xxxx-api.someapp.com/xxx';

class TabData extends StatefulWidget {
  @override
  _TabDataState createState() => _TabDataState();
}



class _TabDataState extends State<TabData> {

  List image = [];
  List Name = [];


  @override
  void initState() {
    super.initState();
    this.fetchUser();
  }




  fetchUser() async{
    var response = await http.get(URL);
    print(response.statusCode);
    if(response.statusCode == 200){
      var items = json.decode(response.body)[0]['name'];
      print(items);
      setState(() {
        Name = items;
      });
    }
    else{
      setState(() {
        Name = [];
      });
    }
  }








  @override
  Widget build(BuildContext context) {
    return ListView.separated(
      itemCount: Name.length,
      itemBuilder: (BuildContext context, int index){
      return getCard(context, index);
    },
      separatorBuilder: (context, index) => Divider(thickness: 2,),
    );
  }



  Widget getCard(BuildContext context, int index){
    return Card(
      child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: ListTile(
          title: Row(
            children: [
              
              Container(
                height: 60,
                width: 60,
                decoration: BoxDecoration(
                  color: Colors.purple,
                  borderRadius: BorderRadius.circular(30),
                  image: DecorationImage(
                    image: NetworkImage('${image[index]}'),
                    fit: BoxFit.cover,
                  ),
                ),
              ),

              SizedBox(width: 20,),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[

                  Text('${Name[index]}', style: kListTileTextNameStyle,),

                ],
              ),

            ],
          ),
        ),
      ),
    );
  }
}

同样的情况也发生在我无法显示的图像上。 请帮助这是我第一次使用 JSON 文件解析。

【问题讨论】:

    标签: json api flutter


    【解决方案1】:

    我可以建议您尽量避免使用动态类型。你的

    var items = json.decode(response.body)[0]['name'];
    

    将项目指定为字符串类型,值为“Abul-Abbas”。之后,您将Name 分配给items,它是一个列表,它是字符串类型的。 您真正想要做的是将所有名称添加到列表中(我猜)。

    所以你应该这样做:

    response.body.forEach((element) {
      Name.add(element["name"]);
    });
    

    我还建议将 Name 重命名为 names。 如果您只想要响应的第一个值,那么 Name 应该是 String 类型。

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2019-01-17
      • 2021-08-23
      • 2020-03-01
      • 2021-09-25
      • 2020-09-12
      • 2023-03-05
      • 2021-11-04
      • 2019-09-06
      相关资源
      最近更新 更多