Получить значение вложенного списка и добавить его в текст кнопки - PullRequest
1 голос
/ 01 мая 2020

Я новичок во флаттере. Я создал вложенный список с вопросами и ответами, подобными этому

  var questions = [
    {
      'question': '1+1',
      'answer': [
        {'text': 2,'correct':1},
        {'text': 3,'correct':0},
        {'text': 4,'correct':0},
        {'text': 5,'correct':0}
      ]
    },
    {
      'question': '1+2',
      'answer': [
        {'text': 2,'correct':0},
        {'text': 3,'correct':1},
        {'text': 4,'correct':0},
        {'text': 5,'correct':0}
      ]
    },
    {
      'question': '1+3',
      'answer': [
        {'text': 2,'correct':0},
        {'text': 3,'correct':0},
        {'text': 4,'correct':1},
        {'text': 5,'correct':0}
      ]
    },
    {
      'question': '1+4',
      'answer': [
        {'text': 2,'correct':0},
        {'text': 3,'correct':0},
        {'text': 4,'correct':0},
        {'text': 5,'correct':1}
      ]
    },
    {
      'question': '1+6',
      'answer': [
        {'text': 7,'correct':1},
        {'text': 8,'correct':0},
        {'text': 9,'correct':0},
        {'text': 10,'correct':0}
      ]
    },
    {
      'question': '1+6',
      'answer': [
        {'text': 7,'correct':1},
        {'text': 8,'correct':0},
        {'text': 9,'correct':0},
        {'text': 10,'correct':0}
      ]
    },    {
      'question': '1+7',
      'answer': [
        {'text': 7,'correct':0},
        {'text': 8,'correct':1},
        {'text': 9,'correct':0},
        {'text': 10,'correct':0}
      ]
    },
  ];

Теперь я хочу получить значение ответа [0] или ответа 1 и добавьте это значение к тексту RaisedButton. Или даже если возможно использовать l oop для создания кнопки для каждого ответа

Заранее спасибо.

Я пробовал

              for ( var i in questions ) RaisedButton(onPressed: (){},child: Text((i['answer'].toString())),)

но я так понимаю enter image description here

1 Ответ

2 голосов
/ 01 мая 2020

Похоже, questions - это List, и этот список снова содержит List, который равен i['answer'] и содержит Map.

Сначала вы должны выполнить итерацию по List ( ниже фрагмент кода, который я использовал ListView, если список не длинный, вы можете использовать for или map). Затем вы должны снова выполнить итерацию, поскольку она также содержит List (для этого я использовал для l oop, но вы также можете использовать map()). Затем, чтобы получить текст вопроса, вы можете использовать клавишу, которая является text:

@override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: questions.length,
      itemBuilder: (BuildContext context, int index) {
        final quest = questions[index]['answer'];
        return Row(
          children: [
            for (final q in quest)
              RaisedButton(
                onPressed: (){
                  print(q["correct"] == 1);
                },
                child: Text(q["text"].toString() ?? ""),
              )
          ],
        );
      }
    );
  }

Попробуйте использовать dartpad .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...