import 'package:learnflutter/questionMain.dart';
import 'questionButton.dart';
class mainQuestions extends StatelessWidget {
List aQuestions;
int questionIndex;
Function answerQuestion;
mainQuestions(
{required this.aQuestions,
required this.answerQuestion,
required this.questionIndex});
@override
Widget build(BuildContext context) {
return Column(
children: [
Question(
aQuestions[questionIndex]['aQuestion'],
),
...(aQuestions[questionIndex]['answers'] as List<Map<dynamic, dynamic>>)
.map((answer) {
return Answer(answerQuestion, answer);
})
],
);
}
}
我的问题是它一直在说:
无法将参数类型“Map
...(aQuestions[questionIndex]['answers'] as List<Map<dynamic, dynamic>>)
.map((answer) {
return Answer(answerQuestion, answer);
答案 0 :(得分:0)
我认为要解决的问题是将答案提取到一个单独的变量中,并在最后调用 toList
。这对我来说没有引起任何编译错误:
List<Widget> _answers() {
List<Map<dynamic, dynamic>> answers = aQuestions[questionIndex]['answers'] as List<Map<dynamic, dynamic>>;
return answers.map(answer => Answer(answerQuestion, answer)).toList();
}
return Column(
children: [
Question(aQuestions[questionIndex]['aQuestion']),
..._answers(),
]
答案 1 :(得分:0)
map 函数返回一个可迭代对象,而不是一个列表。这就是为什么在映射之后,您必须通过调用 toList() 函数将其转换为列表。 方法如下:
import 'package:learnflutter/questionMain.dart';
import 'questionButton.dart';
class mainQuestions extends StatelessWidget {
List aQuestions;
int questionIndex;
Function answerQuestion;
mainQuestions(
{required this.aQuestions,
required this.answerQuestion,
required this.questionIndex});
@override
Widget build(BuildContext context) {
return Column(
children: [
Question(
aQuestions[questionIndex]['aQuestion'],
),
...(aQuestions[questionIndex]['answers'] as List<Map<dynamic, dynamic>>)
.map((answer) {
return Answer(answerQuestion, answer);
}).toList()
],
);
}
}