mvasco
mvasco

Reputation: 5101

Class has no instance getter 'length'

I am trying to create a list with items loaded from a remote server on a screen.

 Container(
              child: FutureBuilder(
                future: fetchClinicas(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    return ListView.builder(
                      itemCount: snapshot.data.length,
                      shrinkWrap: true,
                      itemBuilder: (BuildContext contex, index) {
                        Clinica clinica = snapshot.data[index];
                        return Text(
                          '${clinica.nombreClinica}',
                          style: TextStyle(fontSize: 20),
                        );
                      },
                    );
                  }
                  return CircularProgressIndicator();
                },
              ),
            ),

Here you have both files:

clinica-api.dart

Future<List<Clinica>> fetchClinicas() async {
  String url ="https://.../get_clinicas.php";
  final response = await http.get(url);
  return clinicaFromJson(response.body);

}

And the model class clinica.dart

import 'dart:convert';

List<Clinica> clinicaFromJson(String str) => List<Clinica>.from(json.decode(str).map((x) => Clinica.fromJson(x)));

String clinicaToJson(List<Clinica> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class Clinica {
  Clinica({
    this.idClinica,
    this.nombreClinica,
    this.direccionClinica,
    this.telClinica,
    this.emailClinica,
    this.codClinica,
    this.fechaIngresoClinica,
    this.logoClinica,
  });

  String idClinica;
  String nombreClinica;
  String direccionClinica;
  String telClinica;
  String emailClinica;
  String codClinica;
  DateTime fechaIngresoClinica;
  String logoClinica;

  factory Clinica.fromJson(Map<String, dynamic> json) => Clinica(
    idClinica: json["id_clinica"],
    nombreClinica: json["nombre_clinica"],
    direccionClinica: json["direccion_clinica"],
    telClinica: json["tel_clinica"],
    emailClinica: json["email_clinica"],
    codClinica: json["cod_clinica"],
    fechaIngresoClinica: DateTime.parse(json["fecha_ingreso_clinica"]),
    logoClinica: json["logo_clinica"],
  );

  Map<String, dynamic> toJson() => {
    "id_clinica": idClinica,
    "nombre_clinica": nombreClinica,
    "direccion_clinica": direccionClinica,
    "tel_clinica": telClinica,
    "email_clinica": emailClinica,
    "cod_clinica": codClinica,
    "fecha_ingreso_clinica": "${fechaIngresoClinica.year.toString().padLeft(4, '0')}-${fechaIngresoClinica.month.toString().padLeft(2, '0')}-${fechaIngresoClinica.day.toString().padLeft(2, '0')}",
    "logo_clinica": logoClinica,
  };
}

My issue is that I am getting an exception at line:

 itemCount: snapshot.data.length,

Here the exception output:

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building FutureBuilder<List<Clinica>>(dirty, state: _FutureBuilderState<List<Clinica>>#8b603):
Class 'List<Clinica>' has no instance getter 'lenght'.
Receiver: Instance(length:3) of '_GrowableList'

Upvotes: 0

Views: 4797

Answers (1)

KuKu
KuKu

Reputation: 7492

It seems that there is a misspelling with 'lenght'. I think that 'length' is right.

Upvotes: 7

Related Questions