Necesito obtener datos del servidor y, a veces, los datos pueden estar vacíos. La respuesta de logcat es datos snapshot.data está devolviendo una instancia de mi modelo Instance of 'MyItems' y la respuesta del servidor cuando los datos no están disponibles es

{
    "data": []
}

El problema es que snapshot.hasData siempre devuelve verdadero para una respuesta vacía. He probado snapshot.data == null, pero sigue siendo cierto.

Clase de modelo

import 'dart:convert';

MyItems myItemsFromJson(String str) => MyItems.fromJson(json.decode(str));

String myItemsToJson(MyItems data) => json.encode(data.toJson());

class MyItems {
  MyItems({
    this.dataa,
  });

  List<Datumm> dataa;

  factory MyItems.fromJson(Map<String, dynamic> json) => MyItems(
    dataa: List<Datumm>.from(json["data"].map((x) => Datumm.fromJson(x))),
  );

  Map<String, dynamic> toJson() => {
    "data": List<dynamic>.from(dataa.map((x) => x.toJson())),
  };
}

class Datumm {
  Datumm({
    this.userId,
    this.Name,
    this.MiddelName,
  
  });

  String userId;
  String Name;
  String MiddelName;
 

  factory Datumm.fromJson(Map<String, dynamic> json) => Datumm(
    userId: json["user_id"],
    Name: json["Name"],
    MiddelName: json["MiddleName"],
  
  );

  Map<String, dynamic> toJson() => {
    "user_id": userId,
    "Name": crbtCode,
    "MiddelName": artistName,
    
  };
}

My Future api call

 Future<MyItems> getUdata(String aName) async {
        var url =
            'https://cvbgng.com/test/${aName}';
    
        final response = await http.get(url).timeout(Duration(seconds: 15000));
    
        if (response.statusCode == 200) {
    
         
          return MyItems.fromJson(json.decode(response.body));
        } else {
          throw Exception('Faild to load');
        }
      }
-1
Khalid 13 mar. 2021 a las 08:04

2 respuestas

La mejor respuesta

Marque la condición como snapshot.data.dataa.isEmpty si es cierto, tiene una respuesta vacía.

0
sajith lakmal 13 mar. 2021 a las 06:10

Los datos que obtiene del servidor tienen una matriz vacía como valor de la clave "data"

{
    "data": []
}

Su código verifica que el valor de la clave "data" sea nulo o no nulo.

{
    "data": null
}

Para una condición correcta, debe usar esto:

snapshot.data.length == 0
0
kishan dhankecha 13 mar. 2021 a las 05:12