Flutter中模型类如何存储复杂JSON数据

zzwlnbp8  于 2023-04-22  发布在  Flutter
关注(0)|答案(1)|浏览(125)

这是我的代码
我尝试过打印值。我在令牌中获得了值。我可以使用for each循环迭代API中的每个值,但数据并不存储在我的模型类中。

SharedPreferences prefs = await SharedPreferences.getInstance();
    final token = prefs.getString("token") ?? null;
    final userId = prefs.getInt("id") ?? null;
    List<GroupListData> grpDataList = [];
    if (token != null) {
      String url = "${NetworkRequest.baseUrl}/api/group_list";
      var groupRes = await http.post(Uri.parse(url), body: {
        "user_id": '$userId'
      }, headers: {
        //'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': 'Bearer $token',
      });
      //print(groupRes.body);
      if (groupRes.statusCode == 200) {
        final rowJsonData = jsonDecode(groupRes.body);

        GroupListData groupListData;
        List<dynamic> groupLists = rowJsonData['data'];
        groupLists.forEach((d) {
          print(d['id']);

          groupListData = GroupListData(
            id: d['id'],
            groupName: d["groupName"],
            status: d["status"],
            createdAt: d["createdAt"],
            updatedAt: d["updatedAt"],
          );
          grpDataList.add(groupListData);
        });

        for (var d in rowJsonData['data']) {
          print(d);
        }
      } else {
        print('grpResp ${groupRes.statusCode}');
      }
      //print('Token : $token');

    } else {
      print('token is empty');
    }
    print(grpDataList);
    return grpDataList;
  }

这是我的JSON数据

{
    "data": [
        {
            "id": 1,
            "group_name": "payroll",
            "status": 1,
            "created_at": "2021-07-20 08:27:31",
            "updated_at": "2021-07-20 10:09:11"
        },
        {
            "id": 2,
            "group_name": "New Recruitment",
            "status": 1,
            "created_at": "2021-07-20 11:21:40",
            "updated_at": "2021-07-20 11:21:40"
        }
    ],
    "message": "Data Found",
    "status": 200
}

这是我的模型课,我认为在我的模型课中有一个问题我不能理解

class GroupListData {
  GroupListData({
     this.id,
     this.groupName,
     this.status,
     this.createdAt,
     this.updatedAt,
  });

  int? id;
  String? groupName;
  int? status;
  DateTime? createdAt;
  DateTime? updatedAt;

  factory GroupListData.fromJson(Map<String, dynamic> json) => GroupListData(
        id: json["id"],
        groupName: json["group_name"],
        status: json["status"],
        createdAt: DateTime.parse(json["created_at"]),
        updatedAt: DateTime.parse(json["updated_at"]),
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "group_name": groupName,
        "status": status,
        "created_at": createdAt!.toIso8601String(),
        "updated_at": updatedAt!.toIso8601String(),
      };
}

这是我的UI代码

FutureBuilder<List<GroupListData>>(
          future: getGroupListData(),
          builder: (BuildContext context,
              AsyncSnapshot<List<GroupListData>> snapshot) {
            if (snapshot.data == null) {
              return Container(
                child: Center(
                  child: Text('Loading...'),
                ),
              );
            }
            return ListView.builder(
                scrollDirection: Axis.vertical,
                shrinkWrap: true,
                itemCount: snapshot.data!.length,
                itemBuilder: (BuildContext context, int index) {
                  return RoundedCard(
                      str: '${snapshot.data![index].groupName}',   ///.groupName always return null value
                      onTap: () {
                        Navigator.push(
                          context,
                          PageTransition(
                              type: PageTransitionType.rightToLeft,
                              child: FeedPage(feedTitle: 'Marketing Team'),
                              inheritTheme: true,
                              ctx: context),
                        );
                        print('Marketing card');
                      });
                });
          },
        ),

先谢了

mf98qq94

mf98qq941#

你不需要自己将JSON转换为模态。
1.如果Flutter SDK〈2.0(Null安全),请使用此在线json转换器https://javiercbk.github.io/json_to_dart/
1.否则使用此在线json转换器用于Flutter〉2.0 https://app.quicktype.io/

相关问题