首页 > 解决方案 > 颤动中地图列表的问题

问题描述

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"],我只是不明白为什么,它们之间没有逗号,在变量中perguntas一切都设置好了(据我所知) 但它仍然在说

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

我到底做错了什么?

这里也是小部件Questao的构造函数:

import 'package:flutter/material.dart';

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

  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      margin: EdgeInsets.all(10),
      child: Text(
        texto,
        style: TextStyle(fontSize: 28),
        textAlign: TextAlign.center,
      ),
    );
  }
}

标签: flutterdart

解决方案


修复你的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});

推荐阅读