颤振中地图列表的问题

时间:2021-01-21 01:17:36

标签: flutter dart

import 'package:flutter/material.dart';

import 'Questao.dart';
import 'Resposta.dart';

main() => runApp(PerguntaApp());

class _PerguntaAppState extends State<PerguntaApp> {
  var _perguntaSelecionada = 0;

  _responder() {
    setState(() {
      _perguntaSelecionada++;
    });
    print(_perguntaSelecionada);
  }

  @override
  Widget build(BuildContext context) {
    final List<Map<String, Object>> perguntas = [
      {
        "texto": "Qual e a sua cor favorita?",
        "resposta": ["Azul", "Preto", "Vermelho", "Verde"],
      },
      {
        "texto": "Qual e o seu animal favorito?",
        "resposta": ["Baleia", "Leao", "Cobra", "Elefante"],
      },
      {
        "texto": "Qual e o seu instructor favorito?",
        "resposta": ["Maria", "Joao", "Leo", "Atila"],
      }
    ];

    var respostas = [];
    for(String textResp in perguntas[_perguntaSelecionada]["resposta"]) {
      respostas.add(Resposta(textResp,_responder));
    }

    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(
              title: Text("Perguntas"),
            ),
            body: Column(
              children: <Widget>[
                Questao(perguntas[_perguntaSelecionada]["texto"]),
                ...respostas,
              ],
            )));
  }
}

class PerguntaApp extends StatefulWidget {
  _PerguntaAppState createState() {
    return _PerguntaAppState();
  }
}

伙计们,我无法理解我做错了什么,perguntas[_perguntaSelecionada]["texto"] 中有一条巨大的红线,我就是不明白为什么,它们之间没有逗号,在变量 {{1 }}一切都很好(据我所知)但它仍然在说

'需要 2 个位置参数,但找到 1 个。 尝试添加缺少的参数。'

我到底做错了什么?

这里也是widget Questao的构造函数:

perguntas

2 个答案:

答案 0 :(得分:0)

问题出在 Questao(arg1, arg2) 构造函数中,错误提示构造函数需要两个参数,但您只提供一个参数。

答案 1 :(得分:0)

修复您的 Questao

class Questao extends StatelessWidget {
  final String texto;
  Questao({this.texto});

现在这样称呼

Questao(texto: perguntas[_perguntaSelecionada]["texto"].toString()),

如果你想传递两个参数,那么像这样修复你的 Questao 类

class Questao extends StatelessWidget {
      final String texto;
      final List<String> list;
      Questao({this.texto, this.list});