Как получить список имен атрибутов объекта во Flutter?

Я начинающий программист Flutter. Я пытаюсь создать общий виджет сетки, который позволяет мне передавать объект и динамически создавать столбцы и строки.

Я заставил его работать с конкретным объектом, но мне нужно прочитать имена атрибутов объекта, чтобы динамически создавать имена и значения столбцов сетки, чтобы я мог использовать одну и ту же сетку для клиента или статей или всего.

Например, у меня есть класс для клиентов

      class Client {
  int id;
  String name;
  String mail;

  Client({required this.id, required this.name, required this.mail});
}

затем в моем коде извлеките список клиентов и передайте его в виджет сетки как список.

Мне просто нужно знать, как зациклить полученный объект:

  1. получить список имен полей (id, name, mail)
  2. затем получите его значение, например, что-то вроде
          var field_name = element; 
    obj.field_name.value;

Надеюсь, вы понимаете, что я пытаюсь сделать. Заранее спасибо.

1 ответ

вы можете попробовать этот код

      FutureBuilder<List<Client>>(
            future: // your future method which return the List<Client>,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return ListView.builder(
                  itemCount: snapshot.data!.length,
                  itemBuilder: (context, index) {
                    final client= snapshot.data![index];
                    return ListTile(
                      title: Text(client.name),
                      leading: CircleAvatar(
                        child: Text(client.id),
                      ),
                      subtitle: Text(client.email),
                    );
                  },
                );
              } else if (snapshot.hasError) {
                return Center(
                  child: Text(snapshot.error.toString()),
                );
              }
              return Center(
                child: CircularProgressIndicator(),
              );
            },
          },),

дайте мне знать, если это работает для вас.

Другие вопросы по тегам