List no es un subtipo de tipo en flutter

CorePress2024-01-16  10

No estoy tanto tiempo en aleteo. Tengo el método get. tengo el error 'Lista<dinámica>' no es un subtipo del tipo 'Map<String,dynamic>'

    Future<List<FineResponse>> getAll(String apiToken) async {
        try {
          Response response = await _dio.get(apiEndpoint + "fines",
            options: Options(
                headers: {
                  "Authorization": apiToken
                }),
          );
     
         return response.data
              .map<UserResponse>((el) => UserResponse.fromJson(el)).toList();
    
    
        } catch (error, stacktrace) {
          return null;
        }
      }

respuesta esperada, la hice en cartero

    [
        [
            {
                "id": 1709,
                "uin": "188101772006228217193",
                "user_id": 1215,
       
            },
            {
                "id": 1710,
                "uin": "188101772006228217194",
                "user_id": 1215,
              
            },
            {
                "id": 1711,
                "uin": "1234567890123456789052",
                "user_id": 1215,
             
            },
            {
                "id": 1712,
                "uin": "1234567890123456789053",
                "user_id": 1215,
                
            }
        ]
    ]
    class FineResponse {
      int id;
      String uin;
      int userId;
      String comment;
      String addCoin;
      int statusId;
      int type;
      String createdAt;
      String updatedAt;
    
      FineResponse(
          {this.id,
            this.uin,
            this.userId,
            this.comment,
            this.addCoin,
            this.statusId,
            this.type,
            this.createdAt,
            this.updatedAt});
    
      FineResponse.fromJson(Map<String, dynamic> json) {
        id = json['id'];
        uin = json['uin'];
        userId = json['user_id'];
        comment = json['comment'];
        addCoin = json['add_coin'];
        statusId = json['status_id'];
        type = json['type'];
        createdAt = json['created_at'];
        updatedAt = json['updated_at'];
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['id'] = this.id;
        data['uin'] = this.uin;
        data['user_id'] = this.userId;
        data['comment'] = this.comment;
        data['add_coin'] = this.addCoin;
        data['status_id'] = this.statusId;
        data['type'] = this.type;
        data['created_at'] = this.createdAt;
        data['updated_at'] = this.updatedAt;
        return data;
      }
    }

¿Qué debo cambiar en mi método get?

¿Puedes imprimir lo que devuelve Response.data si ejecutas tu código?

- quoci

19/03/2021 a las 16:00

[[{id: 1709, uin: 188101772006228217193, user_id: 1215, comentario: nulo, add_coin: 2021-03-20 17:18, status_id: 5, tipo: 2, creado_at: 2021-03-19 17: 18:42, actualizado_at: 2021-03-19 17:18:42}, {id: 1711, uin: 1234567890123456789052, user_id: 1215, comentario: nulo, add_coin: 2021-03-20 17:26, status_id: 5, tipo: 2, creado_en: 2021-03-19 17:26:04, actualizado_en: 2021-03-19 17:26:04}]]

- morris

19/03/2021 a las 16:05

1

¿Entonces realmente tienes una Lista<List<Map<String,dynamic>>?

- quoci

19/03/2021 a las 16:08

Sí, tengo List<List<Map<String,dynamic>>

- morris

19/03/2021 a las 16:12

¿Puedes agregar tu clase UserResponse?

- quoci

19/03/2021 a las 16:16



------------------------------------

Dado que su respuesta.data devuelve un List<List<Map<String,dynamic>> necesita crear una Lista<List<FineResponse>> si quieres el mismo resultado que en Postman.

final List<List<FineResponse>> fineResponses = 
    response.data.map((firstList) => 
        firstList.map((data) => 
            FineResponse.fromJson(data)
        ).toList()
    ).toList()



------------------------------------

Creo que esta no es una respuesta JSON válida.

Por favor revisa tu respuesta aquí Verifique la respuesta JSON

1

Sí, no es válido debido a la coma al final

- quoci

19/03/2021 a las 16:49

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare