Flutter Dart报错:实参数量超出预期(预期0个,传入1个)
错误修复方案
问题原因
你定义的answerQuestion是VoidCallback类型,该类型代表无参数、无返回值的函数,但调用时传入了answer['score']作为参数,导致参数数量不匹配报错。
解决步骤
- 调整
answerQuestion的函数类型,从VoidCallback改为可接收对应参数的类型(比如score是整数就用Function(int),不确定类型则用Function(Object)); - 同步更新构造函数的参数类型定义;
- 确保调用时传入的参数类型与定义一致。
修改后的完整代码:
import 'package:flutter/material.dart'; import './answer.dart'; import './question.dart'; class Quiz extends StatelessWidget { final List<Map<String, Object>> questions; final int questionIndex; // 调整为接收int类型参数的函数(假设score是整数) final Function(int) answerQuestion; Quiz({ required this.questions, required this.questionIndex, required this.answerQuestion, }); @override Widget build(BuildContext context) { return Column( children: <Widget>[ Question((questions[questionIndex]['questionText']) as String), ...(questions[questionIndex]['answers'] as List<Map<String, Object>>) .map((answer) { // 将score转为对应类型后传入 return Answer( () => answerQuestion(answer['score'] as int), answer['text'] as String ); }).toList() ], ); } }
如果你的score不是整数,只需将Function(int)替换为对应类型即可(比如Function(String)或Function(num))。
内容的提问来源于stack exchange,提问作者Tooraj rezaei
相关产品推荐
相关产品推荐

