Как отобразить таблицу или аналогичную структуру во флаттере с переданными данными map json - PullRequest
0 голосов
/ 25 мая 2020

У меня есть файл person_details.dart с переменной типа Map, как показано ниже

class PersonDetails extends StatefulWidget {
  final Map selectedData;
  ...

selectedData, как показано ниже

{ "id":"12345", "name":"Sameer Jadhav", "score" : 90}

Итак, в моем приложении flutter, когда я перемещаюсь на следующий экран Я хочу, чтобы динамический c отображал таблицу (или аналогичную структуру), как показано ниже

_________________________
 KEY     VALUES
_________________________
 id      12345
_________________________
 name    Sameer Jadhav
_________________________
 score   90
_________________________

Примечание: поля данных JSON могут изменяться, чтобы включать больше / меньше полей, т.е.

{ "id":"12345", "name":"Sameer Jadhav", "score" : 90, "address" : "India"}

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

Так есть ли какой-нибудь способ добиться того же во флаттере. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

@ hiashutoshsingh, спасибо за ваше время.

Похоже, я понял, чего хотел достичь.

Container(
    child: DataTable(
      columns: const <DataColumn>[
        DataColumn(label: Text('Field')),
        DataColumn(label: Text('Data')),
      ],
      rows: widget.selectedData.entries
          .map((e) => DataRow(cells: [
                DataCell(Text(e.key.toString())),
                DataCell(Text(e.value.toString())),
              ]))
          .toList(),
    ),
  ),

Используя DataTable, вы можете отобразить Map в таблица строк для каждой пары key value динамически.

0 голосов
/ 25 мая 2020

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

Установите здесь, где вы получаете значение, и передайте это через конструктор.

PersonDetails.fromJson(data);

Объявите свою модель.

 class PersonDetails {
          String id;
          String name;
          int score;
          String address;

          PersonDetails({this.id, this.name, this.score, this.address});

          PersonDetails.fromJson(Map<String, dynamic> json) {
            id = json['id'];
            name = json['name'];
            score = json['score'];
            address = json['address'];
          }

          Map<String, dynamic> toJson() {
            final Map<String, dynamic> data = new Map<String, dynamic>();
            data['id'] = this.id;
            data['name'] = this.name;
            data['score'] = this.score;
            data['address'] = this.address;
            return data;
          }
        }
...