将数组推入列表flutter

问题描述 投票:0回答:1

所以我试图创建一个包含“MessageListItem”类型对象的列表。我正在尝试将从 API 返回的数据推送到列表中。我想要将其推入的变量是“messages”。我在“getMessages()”函数中遇到错误。

我收到的错误是:“MessageListItem”类型的值无法分配给“List”类型的变量。

API调用及代码为:

List<MessageListItem> messages;

getMessages() async {
    List<MessageListItem> res = MessageListItem.fromJson(await getMessageList()); 
    // I'm getting the error on the line above. 
    print(res);
  }

Future<dynamic> getMessageList() async {
  final response = await http.get(baseUrl + 'message/jxchumber');
  print(response.statusCode);

  if (response.statusCode == 200) {
    var res = json.decode(response.body);
    return res;
  } else {
    throw Exception('Failed to get data');
  }
}

消息列表项目类

class MessageListItem {
  int id;
  int senderId;
  int recipientId;
  String senderUsername;
  String recipientUsername;
  int itemId;
  String messageContentString;
  bool read;
  dynamic dateTimeSent;

  MessageListItem({
      this.id,
      this.senderId,
      this.recipientId,
      this.senderUsername,
      this.recipientUsername,
      this.itemId,
      this.messageContentString,
      this.read,
      this.dateTimeSent,
  });

  factory MessageListItem.fromJson(Map<String, dynamic> json) {
    return MessageListItem(
      id: json['id'],
      senderId: json['senderId'],
      recipientId: json['recipientId'],
      senderUsername: json['senderUsername'],
      recipientUsername: json['recipientUsername'],
      itemId: json['itemId'],
      messageContentString: json['messageContentString'],
      read: json['read'],
      dateTimeSent: json['dateTimeSent'],
    );
  }
}

从API返回的数据是:

[
    {
        "id": 4,
        "senderId": 1,
        "recipientId": 3,
        "senderUsername": "jxchumber",
        "recipientUsername": "pavster31",
        "itemId": 0,
        "messageContentString": "hello1",
        "read": false,
        "dateTimeSent": "2020-12-14T22:23:55.1473414"
    },
    {
        "id": 3,
        "senderId": 1,
        "recipientId": 9,
        "senderUsername": "jxchumber",
        "recipientUsername": "larsen",
        "itemId": 0,
        "messageContentString": "hello1",
        "read": false,
        "dateTimeSent": "2020-12-14T16:04:50.8232055"
    }
]

我正在尝试将其推入变量“messages”

flutter dart
1个回答
0
投票

试试这个

 getMessages() async {
    var list = await getMessageList();
    List<MessageListItem> res = list.map((i)=>MessageListItem.fromJson(i)).toList();
 }
© www.soinside.com 2019 - 2024. All rights reserved.